Namen der Cursortasten

Fragen zu Tkinter.
Antworten
crazyprogrammer
User
Beiträge: 39
Registriert: Sonntag 27. Juli 2014, 19:06

Ich bin gerade dabei, ein Spiel zu programmieren. Es soll ein Snake-Game werden.
Nun brauche ich die Namen der Cursortasten, um zu definieren, was passiert, wenn z. B. der rechts-Button gedrückt wird. Dann soll sich nähmlich die Schlange um 90° nach rechts drehen.

Kann mir jemand weiter helfen?
Benutzeravatar
darktrym
User
Beiträge: 785
Registriert: Freitag 24. April 2009, 09:26

Kommt auf die Plattform an, Pygame, Curses, msvcrt...
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
CrisBee
User
Beiträge: 61
Registriert: Mittwoch 2. Oktober 2013, 10:45
Wohnort: Bielefeld
Kontaktdaten:

Davon ausgehend, dass du Pygame verwendest:

Ich kenne mich mit Pygame gar nicht aus, hatte nur mal in einem Tutorial "K_ESCAPE" für die Esc Taste gelesen. Naheliegend sind K_LEFT, K_RIGHT, etc...

Nach kurzer Suche fand ich das hier, hoffe es hilft weiter: Pygame Doc Keys
Das Reallife ist nur etwas für Leute, die keine Freunde im Internet haben! :P
Meine Fotografie: http://www.cutefeet.de
crazyprogrammer
User
Beiträge: 39
Registriert: Sonntag 27. Juli 2014, 19:06

Danke für die schnellen Antworten!
Gestern habe ich mich angemeldet, um die Frage zu posten, und jetzt habe ich schon 2 Antworten!

Ich kenne mich jetzt mit PyGame nicht aus, ich habe mit dem Modul xturtle gearbeitet.
Das ist ein auf Tkinter aufsetztenedes Modul, welches der Autor des Python-Buches, das ich habe, erstellt hat.
Er heißt Gregor Lingl. Sagt euch das etwas?
BlackJack

@crazyprogrammer: '<Left>', '<Right>', '<Up>', und '<Down>' sind die Namen der Ereignisse für die Pfeiltasten.

In aktuellen Python-Versionen entspricht das `turtle`-Modul aus der Standardbibliothek dem `xturtle`-Modul aus dem Buch.
crazyprogrammer
User
Beiträge: 39
Registriert: Sonntag 27. Juli 2014, 19:06

Aha, danke.
Das wusste ich nicht, ich verwende nämlich Python 2.5.
Gibt es da große Unterschiede zwischen den neuesten Versionen und den älteren?
crazyprogrammer
User
Beiträge: 39
Registriert: Sonntag 27. Juli 2014, 19:06

Danke, BlackJack.
Ich habe ein kleines Programm zum Testen geschrieben und es läuft super.

Code: Alles auswählen

from xturtle import *

def links():
    left(90)

def rechts():
    right(90)

def vor():
    forward(50)

def play():
    screen.onkey(links, "Left")
    screen.onkey(rechts, "Right")
    screen.onkey(vor, "Up")
    screen.listen()

if __name__ == "__main__":
    screen = getscreen()
    play()
BlackJack

@crazyprogrammer: Warum verwendest Du Python 2.5? Das ist schon recht alt. Es kam 2006 heraus und die letzte 2.5er 2008, also ist das schon mindestens 8 Jahre alt. Nahezu alles was darauf läuft, sollte unverändert auf der aktuelleren 2.7 laufen. Und da wäre `xturtle` dann auch als `turtle`-Modul schon dabei.
crazyprogrammer
User
Beiträge: 39
Registriert: Sonntag 27. Juli 2014, 19:06

@BlackJack: Ich dachte, da es im buch so beschrieben ist, dass ich solange Python 2.5 verwende, wie ich mit diesem Buch arbeite.
Später könnte ich dann ja immernoch updaten. Es kostet ja nix. Aber du hast ja recht. Das Buch erschien in der 3. Auflage mit Python 2.5.2 im Jahr 2008.
BlackJack

@crazyprogrammer: Noch eine kleine Anmerkung zum Programm: `screen` würde ich in die `play()`-Funktion verschieben. Oder dort als Argument übergeben. Die Minifunktionen könnte man mit `functools.partial()` erstellen. Und es fehlt der Aufruf der Hauptschleife, damit sich das Programm nicht sofort wieder schliesst!

Code: Alles auswählen

from functools import partial
from xturtle import *

 
def play(screen):
    screen.onkey(partial(left, 90), 'Left')
    screen.onkey(partial(right, 90), 'Right')
    screen.onkey(partial(forward, 50), 'Up')
    screen.listen()
    mainloop()

 
if __name__ == '__main__':
    play(getscreen())
crazyprogrammer
User
Beiträge: 39
Registriert: Sonntag 27. Juli 2014, 19:06

Ich hab den Code kopiert und ausprobiert. Er funktioniert toll! :D
Dein Code ist eleganter und ca. halb so lang wie meiner. Eine per. Frage: Woher weist du so viel? :wink:
Antworten