Heim > Backend-Entwicklung > Python-Tutorial > Wie kann eine zu schnelle Bewegung bei der Verarbeitung von Tastatureingaben in Pygame verhindert werden?

Wie kann eine zu schnelle Bewegung bei der Verarbeitung von Tastatureingaben in Pygame verhindert werden?

DDD
Freigeben: 2024-12-18 01:13:10
Original
595 Leute haben es durchsucht

How to Prevent Excessively Fast Movement When Handling Keyboard Input in Pygame?

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
Nach dem Login kopieren

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
Nach dem Login kopieren

Außerdem würden Sie während der Spielschleife den Zähler verringern:

if move_ticker > 0:
    move_ticker -= 1
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage