2017-11-05 3 views
0

Ich arbeite gerade an einem Spiel, in dem ich dem Spieler die Möglichkeit geben möchte, vier Charaktere zu spielen. Hier ist meine aktuellen Code, dies zu tun:Nicht erkennende Taste in pygame drücken

running = 1 
charactersChoice = ['char.png', 'char2.png', 'char3.png', 'char4.png'] 
choice = '' 

while choice == '': 
    screen.fill((47, 79, 79)) 
    screen.blit(pygame.image.load(charactersChoice[0]), (100,100)) 
    screen.blit(pygame.image.load(charactersChoice[1]), (700,100)) 
    screen.blit(pygame.image.load(charactersChoice[2]), (100,600)) 
    screen.blit(pygame.image.load(charactersChoice[3]), (700,600)) 

    keys = pygame.key.get_pressed() 

    #Choose character 

    if keys[pygame.K_1]: 
     choice = charactersChoice[0] 

    if keys[pygame.K_2]: 
     choice = charactersChoice[1] 

    if keys[pygame.K_3]: 
     choice = charactersChoice[2] 

    if keys[pygame.K_4]: 
     choice = charactersChoice[3] 


    pygame.display.flip() 


while running == 1: 
#rest of code for game here 

Wie Sie sehen können, habe ich blitten die vier verschiedenen Charakter-Profile auf dem Bildschirm und dann prüfen, ob der Spieler die Tasten gedrückt hat 1-4 ihre Option auszuwählen. Nach Auswahl ihrer Option sollte sie sich auf die Hauptschleife bewegen. Wenn ich die Taste '1' drücke, während der Code ausgeführt wird, wird die Variablenauswahl nicht geändert.

Ich hoffe, ich habe mein Problem gut genug erklärt.

+1

Mögliche Duplikate von [pygame.key.get \ _pressed() funktioniert nicht] (https://stackoverflow.com/questions/17938170/pygame-key-get-pressed-is-not-working) – ShadowMitia

+0

Versuchen Sie zu drucken Aus der Bewertung der if-Aussagen. Sehen Sie, ob sie wahr werden, so wie sie es sollten. Versuchen Sie auch, Schlüssel auszudrucken. –

+0

@ShadowMitia Ich habe pygame.key.get_pressed() später wieder im Programm verwendet, aber das Ändern hat keine Auswirkungen auf das Problem. – Mattattack

Antwort

1

Sie müssen mindestens einmal pygame.event.pump() anrufen, bevor Sie pygame.key.get_pressed() verwenden, damit Pygame überprüfen kann, welche Tasten gedrückt wurden.