2017-06-11 1 views
0

Ich mache ein Quizspiel und bin in ein kleines Loch gelaufen. Ich habe es so gemacht, dass, wenn der Benutzer die richtige Taste und die Leertaste drückt, die Punkte ihnen gegeben werden. Aber das Loop-Loch ist, dass sie einfach alles und dann die Leertaste drücken können. also wie höre ich damit auf?Python/Pygame- Wie mache ich ein Programm so, dass nach dem Drücken einer Taste keine anderen aktiviert werden können?

keys = pygame.key.get_pressed() 
if keys[pygame.K_w] and (General_knowledge[question_num - 1][5] == "a"): 
    test = 1 
if keys[pygame.K_d] and (General_knowledge[question_num - 1][5] == "b"): 
    test = 1 
if keys[pygame.K_s] and (General_knowledge[question_num - 1][5] == "c"): 
    test = 1 
if keys[pygame.K_a] and (General_knowledge[question_num - 1][5] == "d"): 
    test = 1 
if keys[pygame.K_SPACE]: 
    space_bar = 1 

if (test == 1) and (space_bar == 1) and (rect_width > 0): 
    test = 0 
    space_bar = 0 
    player_1_score = rect_width/30 
    player_1_score = round(player_1_score, 0) 
    print(player_1_score) 
+0

Beliebige Taste + Leerzeichen oder "w/d/s/a" + Leerzeichen? –

Antwort

0

Sie könnten Ihrem Code einen einfachen Zähler hinzufügen, wenn nur eine Taste gedrückt wird. Versuchen Sie so etwas wie diese

keys = pygame.key.get_pressed() 
keysPressed = 0; 
if keys[pygame.K_w] and (General_knowledge[question_num - 1][5] == "a"): 
    test = 1 
    keysPressed += 1; 
if keys[pygame.K_d] and (General_knowledge[question_num - 1][5] == "b"): 
    test = 1 
    keysPressed += 1; 
if keys[pygame.K_s] and (General_knowledge[question_num - 1][5] == "c"): 
    test = 1 
    keysPressed += 1; 
elif keys[pygame.K_a] and (General_knowledge[question_num - 1][5] == "d"): 
    test = 1 
    keysPressed += 1; 
if keys[pygame.K_SPACE]: 
    space_bar = 1 

if (test == 1) and (space_bar == 1) and (keysPressed == 1) and (rect_width > 0): 
    test = 0 
    space_bar = 0 
    player_1_score = rect_width/30 
    player_1_score = round(player_1_score, 0) 
    print(player_1_score) 

diese Weise, wenn mehr als 1 Taste gedrückt wird, dann Ihre letzte if Anweisung fehl.

Verwandte Themen