Seite 1 von 1

Tastenabfrage bei Pygame

Verfasst: Montag 10. August 2009, 11:07
von Cow
Hallo,

Ich bin neu hier. Seither habe ich ausschließlich mit Ruby gearbeitet und hab mich jetzt entschlossen, Python zu lernen, da mir Ruby auf Windows zu viele Probleme macht und die Syntax von Python sehr ähnlich ist wie die von Ruby.

Wenn ich bei Ruby Tasten abfragen wollte, habe ich dazu immer auf die Win32 Api zugegriffen, mit Python kenn ich mich noch so gut wie gar nicht aus, deshalb weiß ich nicht, ob es dort auch so einfach funktioniert, aber da es in Pygame auch ein Keyboard-Modul gibt, werde ich wohl eher das benutzen. Ich hab versucht, irgendwie rauszufinden, wie es geht und ob es überhaupt geht, aber leider hat garnichts funktioniert.

Mit

Code: Alles auswählen

pygame.key.get_pressed()
bekomme ich nur eine Sequenz voller Nullen, egal wie viele und welche Tasten ich drücke.


Kann mich hier bitte irgendjemand in diese Kunst einweisen, ohne viele Fachbegriffe, wenn möglich?

cow

Verfasst: Montag 10. August 2009, 15:12
von Teabag
Hey, guck dir das mal an:

Code: Alles auswählen

for event in pygame.event.get():
            if event.type == QUIT:# X Oben rechts
                sys.exit(0) # Beenden
            if event.type == KEYDOWN: # Taste gedrueckt?
                self.keyslist.append(event.key) # Taste an Liste anhaengen
            if event.type == KEYUP: # Taste losgelassen?
                try:
                    self.keyslist.remove(event.key)# taste rauslöschen
                except:
                    pass
du brauchst dann halt eine liste self.keyslist...
die kannst du dir dann printen lassen..

Verfasst: Dienstag 11. August 2009, 15:08
von Cow
Danke,

ich habs jetzt hinbekommen.

Wie schafft man es denn, dass man die Konstanten direkt schreiben kann.
Bei mir gibt es so ne Fehlermeldung.

Es funktioniert nur, wenn ich
pygame.QUIT, pygame.KEYDOWN etc. schreibe

Verfasst: Dienstag 11. August 2009, 22:31
von Teabag
ich bin mir nicht sicher ob das damit was zu tun hat.. aber wie importierst du denn pygame ?
probier mal

Code: Alles auswählen

import pygame
from pygame.locals import *

Verfasst: Donnerstag 13. August 2009, 02:47
von str1442
Sowas macht man normalerweise nicht in Python. Man verschmutzt sich dadurch den Namensraum den Modules, welches dann recht viele (bei pygame hunderte) Namen mit sich rumschleppt. Ich würde an dieser Stelle jedesmal pygame.XYZ schreiben und auch klarmachen, was K_8 usw eigentlich bedeutet. Lies bitte die übersetzte Version des offiziellen Python Tutorial auf tutorial.pocoo.org .

Verfasst: Donnerstag 13. August 2009, 08:32
von BlackJack
@str1442: Wobei `pygame.locals` explizit dafür gedacht ist sich die Konstanten von PyGame per `*`-Import zu holen. Ich verwende das normalerweise auch nicht, aber hier ist genau dieses Modul halt in der Dokumentation von PyGame für diesen Zweck beschrieben. Das ist die einzige Daseinsberechtigung für diesen Namensraum, denn alles darin ist auch in `pygame` selbst enthalten.