Obtener entrada de teclado en Pygame

Maxim Maeder 21 junio 2023
  1. Use el bucle evento para obtener entrada de teclado en Pygame
  2. Use pygame.key.get_pressed() para obtener entrada de teclado en Pygame
Obtener entrada de teclado en Pygame

Este tutorial le enseña cómo obtener entrada de teclado en Pygame.

El código que se muestra aquí no es el código completo para una ventana de Pygame válida. Si está interesado en un marco básico, consulte este artículo.

Hay dos formas de obtener entrada de teclado en Pygame: el bucle event y pygame.key.get_pressed(). Tienen una diferencia significativa, que se explicará más adelante.

Use el bucle evento para obtener entrada de teclado en Pygame

Ya usamos el ciclo de eventos si lee el artículo para obtener un marco Pygame porque manejamos la solicitud de salida de la ventana allí.

Hacemos un bucle sobre una matriz devuelta por el método pygame.event.get(). Contiene todos los eventos que ocurrieron en este marco.

En la siguiente línea, comprobamos su tipo. Hay diferentes tipos, y los más utilizados son KEYDOWN y KEYUP.

Como puede ver a continuación, también verificamos el evento KEYDOWN. Después de eso, comprobamos si la clave era E o no.

Si lo fue, imprimirá E Presionado. Esto solo se evaluará como verdadero en el cuadro en el que se presionó la tecla, no cuando se mantiene presionada.

Para hacer eso, necesitamos pygame.key.get_pressed(). Y en la siguiente parte, se describe su uso.

Fragmento de código:

# 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")

Use pygame.key.get_pressed() para obtener entrada de teclado en Pygame

Usando esto, obtenemos el estado de la clave en el cuadro actual. Esto significa que también recibimos una señal cuando se mantiene presionada la tecla y no solo cuando se presiona por primera vez.

A continuación encontrará un ejemplo simple de esto. Primero, obtenemos una matriz con todas las teclas presionadas en este marco con el método pygame.key.get_pressed, y luego veremos si la tecla fue presionada.

Obtenemos este valor con una de las constantes clave en Pygame. Esto imprimirá W Presionado si la tecla W está presionada.

Fragmento de código:

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

Código de ejemplo completo

# 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