Erhalten Sie Tastatureingaben in Pygame

Maxim Maeder 21 Juni 2023
  1. Verwenden Sie die event-Schleife, um Tastatureingaben in Pygame zu erhalten
  2. Verwenden Sie pygame.key.get_pressed(), um Tastatureingaben in Pygame zu erhalten
Erhalten Sie Tastatureingaben in Pygame

In diesem Tutorial erfahren Sie, wie Sie in Pygame Tastatureingaben erhalten.

Der hier angezeigte Code ist nicht der vollständige Code für ein gültiges Pygame-Fenster.

Es gibt zwei Möglichkeiten, Tastatureingaben in Pygame zu erhalten: die event-Schleife und pygame.key.get_pressed(). Sie haben einen signifikanten Unterschied, der später erklärt wird.

Verwenden Sie die event-Schleife, um Tastatureingaben in Pygame zu erhalten

Wir durchlaufen ein Array, das von der Methode pygame.event.get() zurückgegeben wird. Es enthält alle Ereignisse, die in diesem Frame passiert sind.

In der folgenden Zeile prüfen wir den Typ. Es gibt verschiedene Typen, und die am häufigsten verwendeten sind KEYDOWN und KEYUP.

Wie Sie unten sehen, suchen wir auch nach dem Ereignis KEYDOWN. Danach haben wir überprüft, ob der Schlüssel E war oder nicht.

Wenn dies der Fall war, wird E Pressed gedruckt. Dies wird nur in dem Frame als wahr ausgewertet, in dem die Taste gedrückt wurde, nicht, wenn sie gedrückt gehalten wird.

Dazu brauchen wir pygame.key.get_pressed(). Und im nächsten Teil wird seine Verwendung beschrieben.

Code-Auszug:

# Main Loop
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_e:
            print("E Pressed")

Verwenden Sie pygame.key.get_pressed(), um Tastatureingaben in Pygame zu erhalten

Damit erhalten wir den Zustand des Keys im aktuellen Frame. Das heißt, wir bekommen auch ein Signal, wenn die Taste gedrückt gehalten wird und nicht nur beim ersten Drücken.

Nachfolgend finden Sie ein einfaches Beispiel dafür. Zuerst erhalten wir mit der Methode pygame.key.get_pressed ein Array mit allen gedrückten Tasten an diesem Frame und sehen dann, ob die Taste gedrückt wurde.

Wir erhalten diesen Wert mit einer der Schlüsselkonstanten in Pygame. Dadurch wird W Pressed gedruckt, wenn die Taste W gedrückt wird.

Code-Auszug:

keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
    print("W Pressed")

Vollständiger Beispielcode

# Imports
import sys
import pygame

# Configuration
pygame.init()
fps = 60
fpsClock = pygame.time.Clock()
width, height = 640, 480
screen = pygame.display.set_mode((width, height))

# Game loop.
while True:
    screen.fill((20, 20, 20))
    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_e:
                print("E Pressed")

    keys = pygame.key.get_pressed()
    if keys[pygame.K_w]:
        print("W Pressed")

    pygame.display.flip()
    fpsClock.tick(fps)
Maxim Maeder avatar Maxim Maeder avatar

Hi, my name is Maxim Maeder, I am a young programming enthusiast looking to have fun coding and teaching you some things about programming.

GitHub