Comment utiliser pygame.KEYDOWN?
Donc, ma question a été déjà posée, mais je ne savais pas quoi chercher, et n'a pas trouvé beaucoup. Donc, mon problème est, j'ai fait les 2 fonctions, qui serait de vérifier pour un événement
def get_pygame_events():
pygame_events = pygame.event.get()
return pygame_events
et
def get_keys_pressed(self):
keys_pressed = get_pygame_events() #pygame.event.get(pygame.KEYDOWN)
# print(keys_pressed)
keys_pressed_list = []
for event in keys_pressed:
if event.type == pygame.KEYDOWN:
if event.key == K_LEFT:
keys_pressed_list.append("left")
if event.key == K_RIGHT:
keys_pressed_list.append("right")
if event.key == K_UP:
keys_pressed_list.append("up")
if event.key == K_DOWN:
keys_pressed_list.append("down")
if event.key == K_a:
keys_pressed_list.append("a")
if event.key == K_d:
keys_pressed_list.append("b")
if event.key == K_w:
keys_pressed_list.append("w")
if event.key == K_s:
keys_pressed_list.append("s")
if event.key == K_SPACE:
keys_pressed_list.append("space")
if event.key == K_q:
keys_pressed_list.append("q")
if event.key == K_e:
keys_pressed_list.append("e")
if event.type == pygame.MOUSEBUTTONDOWN:
keys_pressed_list.append("click")
return (keys_pressed_list, event.pos)
return keys_pressed_list
J'ai attendu que si je pouvais faire quelque chose de similaire à:
while True:
Variable1 = get_pygame_events()
Variable2 = get_keys_pressed()
if Variable2 == ["w"]:
print("w")
(P. S.: Que while
boucle était juste un résumé de ce que j'ai fait)
alors si j'ai tenu vers le bas W, alors W serait imprimé plus de et plus et plus encore une fois, au lieu de cela, quand j'ai essayé, c'imprimé W une fois. et si je vous appuyez de nouveau, c'est tout ce qui allait se passer.
Comment puis-je faire en maintenant la valeur de W (ou toutes les) clé, il identifie l'événement se produise, et (dans ce cas) imprime w chaque fois qu'elle passe par la while
boucle?
OriginalL'auteur Lord_GumquestriX | 2014-08-25
Vous devez vous connecter pour publier un commentaire.
Utilisation
pygame.KEYDOWN
etpygame.KEYUP
pour détecter si une clé est physiquement enfoncé ou relâché. Vous pouvez activer la répétition du clavier en utilisantpygame.key.set_repeat
de générer de multiplespygame.KEYDOWN
événements lorsqu'une touche est maintenue enfoncée, mais c'est rarement une bonne idée.Au lieu de cela, vous pouvez utiliser
pygame.clé.get_pressed()
pour vérifier si une clé est actuellement détenu à la baisse:OriginalL'auteur sloth
événement.clé renvoie le code ascii du caractère de la clé
OriginalL'auteur xwang
Je vous conseille de coller avec le événementiel d'approche plutôt que d'utiliser un mécanisme d'interrogation.
Vous devriez laisser la clé des événements de modifier certaines de ses états internes afin de refléter une touche pressée de l'omi.
Exemple: Vous contrôlez un vaisseau spatial avec votre clavier. Vous voulez la propulsion des fusées de feu lorsque vous appuyez sur l'une des 'w', 's', 'a' ou 'd' pour mettre le navire accélérer dans une certaine direction:
Cela aura pour effet de faire l'objet d'accélérer tandis qu'un mouvement de la touche est enfoncée, et l'arrêt de l'accélération lorsque la touche est relâchée.
OriginalL'auteur user2015735
Utiliser pygame.clé.set_repeat().
OriginalL'auteur pydude