Tastatureingabe in Pygame: Umgang mit Tastenanschlagereignissen
Bei der Entwicklung eines einfachen Spiels mit Pygame 1.9.2 kann es zu einem Problem kommen, bei dem a Das mit den Pfeiltasten gesteuerte Schiff bewegt sich übermäßig schnell. Dieses Problem ergibt sich aus der kontinuierlichen Registrierung von Tastendrücken, während die Tasten gedrückt gehalten werden.
Um dieses Problem zu beheben, sollten Sie die Behandlung von Tastenanschlagereignissen in Betracht ziehen, anstatt sich auf pygame.key.get_pressed() zu verlassen, das aktuell gedrückte Tasten abruft. Das KEYDOWN-Ereignis erfasst Tasten, die innerhalb des aktuellen Frames gedrückt werden, und stellt so sicher, dass Bewegungen nur einmal pro Tastendruck erfolgen.
events = pygame.event.get() for event in events: if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: location -= 1 if event.key == pygame.K_RIGHT: location += 1
Wenn jedoch eine kontinuierliche Bewegung gewünscht wird, können Sie Einschränkungen implementieren, um die Bewegungsfrequenz einzuschränken. Ein Ansatz besteht darin, eine maximale Bildrate festzulegen oder einen Zähler zu verwenden, um die Bewegung alle paar Ticks zu begrenzen.
move_ticker = 0 keys = pygame.key.get_pressed() if keys[K_LEFT]: if move_ticker == 0: move_ticker = 10 location -= 1 if location == -1: location = 0 if keys[K_RIGHT]: if move_ticker == 0: move_ticker = 10 location += 1 if location == 5: location = 4
Außerdem würden Sie während der Spielschleife den Zähler verringern:
if move_ticker > 0: move_ticker -= 1
Dadurch wird sichergestellt, dass die Bewegung nur alle 10 Bilder erfolgt.
Das obige ist der detaillierte Inhalt vonWie kann eine zu schnelle Bewegung bei der Verarbeitung von Tastatureingaben in Pygame verhindert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!