Tastenabfrage bei Pygame

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Cow
User
Beiträge: 5
Registriert: Montag 10. August 2009, 10:41

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
Teabag
User
Beiträge: 81
Registriert: Sonntag 13. Mai 2007, 20:44

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..
Cow
User
Beiträge: 5
Registriert: Montag 10. August 2009, 10:41

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
Teabag
User
Beiträge: 81
Registriert: Sonntag 13. Mai 2007, 20:44

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 *
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

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 .
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.
Antworten