Seite 1 von 1

Namen der Cursortasten

Verfasst: Sonntag 27. Juli 2014, 19:17
von crazyprogrammer
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?

Re: Namen der Cursortasten

Verfasst: Sonntag 27. Juli 2014, 19:20
von darktrym
Kommt auf die Plattform an, Pygame, Curses, msvcrt...

Re: Namen der Cursortasten

Verfasst: Montag 28. Juli 2014, 14:36
von CrisBee
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

Re: Namen der Cursortasten

Verfasst: Montag 28. Juli 2014, 15:57
von crazyprogrammer
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?

Re: Namen der Cursortasten

Verfasst: Montag 28. Juli 2014, 16:35
von 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.

Re: Namen der Cursortasten

Verfasst: Dienstag 29. Juli 2014, 17:14
von crazyprogrammer
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?

Re: Namen der Cursortasten

Verfasst: Dienstag 29. Juli 2014, 17:36
von crazyprogrammer
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()

Re: Namen der Cursortasten

Verfasst: Dienstag 29. Juli 2014, 20:03
von 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.

Re: Namen der Cursortasten

Verfasst: Mittwoch 30. Juli 2014, 11:44
von crazyprogrammer
@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.

Re: Namen der Cursortasten

Verfasst: Samstag 2. August 2014, 10:34
von 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())

Re: Namen der Cursortasten

Verfasst: Sonntag 3. August 2014, 12:19
von crazyprogrammer
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: