2016-05-09 10 views
2

Ich versuche, eine Box auf dem Bildschirm mit den Pfeiltasten bewegen. Wenn ich jedoch die Pfeiltasten drücke, passiert nichts. Da ich nicht sehen kann, wo ich etwas falsch mache und ich keinen Visualizer finde, der pygame unterstützt, muss ich dich fragen. Hier ist der Code:Problem mit Tastaturereignissen oder anderen

import pygame, sys 

FPS = 60 
Clock = pygame.time.Clock() 

pygame.init() 

SURF = pygame.display.set_mode((600, 700)) 
pygame.display.set_caption("BOX GAME V1.0") 

RED = (255, 0, 0) 
WHITE = (255, 255, 255) 
BLACK = (0, 0, 0) 

box_x = 50 
box_y = 50 

box = (box_x, box_y, 50, 50) 

while True: 
    SURF.fill(BLACK) 

    pygame.draw.circle(SURF, RED, (200, 150), 25) 
    pygame.draw.rect(SURF, WHITE, box) 

    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      sys.exit() 
     elif event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_LEFT: 
       box_x -= 20 
      elif event.key == pygame.K_RIGHT: 
       box_x += 20 
      elif event.key == pygame.K_UP: 
       box_y -= 20 
      elif event.key == pygame.K_DOWN: 
       box_y += 20 



    pygame.display.update() 
    Clock.tick(FPS) 
+0

Haben Sie versucht, auszudrucken, wenn Sie sich in der 'pygame.event.get()' - Schleife befinden? –

+0

Ich habe nicht daran gedacht. Vielen Dank! Ich werde es versuchen! –

Antwort

3

Ich gehe davon aus, dass das Spiel läuft und die Box bewegt sich trotz Ihrer Tastatureingabe nicht. Wenn ich recht habe, dann ist es die Tatsache, dass Sie die Boxposition nicht jedes Mal durch die While-Schleife aktualisieren.

Die Zeile pygame.draw.rect(SURF, WHITE, box) verweist auf die Box, die Sie vor dem Start der Spielschleife definiert haben, aber die Position dieser Box wird nicht aktualisiert. Aktualisieren Sie die Boxposition, bevor Sie sie zeichnen. Dies kann durch Verschieben von box = (box_x, box_y, 50, 50) an den Anfang der Spielschleife erfolgen.

while True: 
    box = (box_x, box_y, 50, 50) 

    SURF.fill(BLACK) 
    pygame.draw.circle(SURF, RED, (200, 150), 25) 
    pygame.draw.rect(SURF, WHITE, box) 

    ### key press logic 
Verwandte Themen