2017-09-25 2 views
1

machte ich dieses Denken, dass es würde funktioniert, aber es nicht hat XD es bewegt sich nur das Bild einmal pro Klick mir bitte helfenIch möchte ein Bild auf dem Bildschirm verschieben, während Sie eine Taste gedrückt halten. Wie kann ich es bekommen?

for event in pygame.event.get(): 
    if event.type == QUIT: 
     pygame.quit() 
     sys.exit() 

    while event.type == pygame.KEYDOWN: 
     right == K_RIGHT 
     left == K_LEFT 
     if right == 1 
      posX += velocidad 
     elif lef == 1: 
      posX -= velocidad 

Antwort

1

Ich glaube, Sie pygame.key.get_pressed() gewöhnungs wollen wie folgt.

for event in pygame.event.get(): 
    if event.type == QUIT: 
     pygame.quit() 
     sys.exit() 

pressed_keys = pygame.key.get_pressed() 
if pressed_keys[K_RIGHT]: 
    posX += velocidad 
if pressed_keys[K_LEFT]: 
    posX -= velocidad 

event.type == pygame.KEYDOWN fängt nur, wenn ein Schlüssel zuerst nach unten gedrückt wird. Wenn Sie dies verwenden möchten, könnten Sie ein Attribut wie your_object.moving_right = True ändern. Verwenden Sie dann keyup, um es wieder auszuschalten.

0

Insgesamt denke ich, was Sie wollen event.key zu überprüfen ist, mit eine if-Anweisung.

Allerdings gibt es mehrere Probleme (sowohl strukturelle als auch syntaktische) mit Ihrem Code. event.type ändert sich nicht, so macht die Verwendung while keinen Sinn (und dies wird für immer laufen und Ihr Programm hängen lassen). Ich bin nicht sicher, was Ihre Absicht mit den Vergleichen == 1 ist, da K_RIGHT und K_LEFT willkürliche Konstanten für Schlüsselcodewerte sind. Nicht zu erwähnen, dass right == K_RIGHT ein Ausdruck ist, der nichts tut (meinst du right = K_RIGHT?) Und du hast einen klaren Tippfehler mit lef. Ich denke, der nächste Arbeits Code an die Struktur, die Sie (vorausgesetzt, die anderen Code nicht funktioniert auch gezeigt) zur Verfügung gestellt haben so etwas wie dies aussehen würde:

for event in pygame.event.get(): 
    if event.type == QUIT: 
    pygame.quit() 
    sys.exit() 

    if event.type == pygame.KEYDOWN: 
    right = K_RIGHT 
    left = K_LEFT 
    if event.key == right: 
     posX += velocidad 
    elif event.key == left: 
     posX -= velocidad 
Verwandte Themen