Rahmen um "Spielfeld"

Fragen zu Tkinter.
Antworten
-sb-Simon
User
Beiträge: 1
Registriert: Freitag 14. Juni 2013, 21:18

Hallo Community:)

Ich hab bin in einem Programmier Kurs und habe momentan leider keine Ahnung wie ich weiter kommen soll:/ Ich habe einen Ball den ich bewegen kann und jetzt soll ich einen Rahmen hinzufügen so das er nicht aus dem Spielfeld kann. Das ist mein bisheriges Programm:

Code: Alles auswählen

from Tkinter import *
import easygui

breite = 800
hoehe = 600

xPosSpieler = 1
yPosSpieler = 1
xPosMax = breite/50
yPosMax = hoehe/50

master = Tk()
zeichenflaeche = Canvas(master, width = breite, height = hoehe)
zeichenflaeche.pack()

kreis = zeichenflaeche.create_oval(50, 50, 100, 100, fill = "red")

#Behandeln von Tastendrücken
def keypress(event):
    global xPosSpieler, yPosSpieler, xPosMax, yPosMax
    
    taste = event.char

    #Bewegung (rechts)
    if taste == "d":
       if xPosSpieler <= xPosMax :
            zeichenflaeche.move(kreis, 50, 0)
            xPosSpieler = xPosSpieler + 1

    #Bewegung (unten)
    elif taste == "s":
       if yPosSpieler <= yPosMax :
            zeichenflaeche.move(kreis, 0, 50)
            yPosSpieler = yPosSpieler + 1
        
    #Bewegung (links)
    elif taste == "a":
       if xPosSpieler >= xPosMax :
            zeichenflaeche.move(kreis, -50, 0)
            xPosSpieler = xPosSpieler - 1
        
    #Bewegung (oben)
    elif taste == "w":
       if yPosSpieler >= yPosMax :
            zeichenflaeche.move(kreis, 0, -50)
            yPosSpieler = yPosSpieler - 1

    else:
        easygui.msgbox ("Falsche Taste: "+taste)



    zeichenflaeche.update()

zeichenflaeche.create_rectangle(5, 5, breite, hoehe, width = 3)

#angeben welche Funktion bei Tastendrücken aufgerufen wird
master.bind_all('<Key>', keypress)
mainloop()
Hoffentlich wird es richtig angezeigt

Danke für eure Hilfe!
Zuletzt geändert von Hyperion am Dienstag 18. Juni 2013, 19:37, insgesamt 1-mal geändert.
Grund: Code in Python-Code-Tags gesetzt.
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Ob es richtig angezeigt wird, seht ihr wenn das "Weiß" angeht ;)

Nehme den Knopf "python" über deinem Eingabefeld ;)

Deine Spielerposition wird immer um "+1" bzw. "-1" inkrementiert/dekrementiert. Aber er prüft ja, nach "höhe/50" und "breite/50"!

800/50 =400
600/50 = 300

Das heißt, du musst 400x eine Taste in eine Richtung drücken, bevor dein Kreis stehen bleibt. Du solltest die Position also um 50 verändern ;)

Code: Alles auswählen

if taste == "d":
    …
    xPosSpieler = xPosSpieler+50
So erschließt mir jedenfalls das Problem.

MFG
Maik
LG Maik
Antworten