Eventos continuos
En Pygame, además de detectar cuándo una tecla se presiona o se suelta con los eventos KEYDOWN
y KEYUP
, también es posible detectar si una tecla se mantiene presionada durante un periodo de tiempo utilizando pygame.key.get_pressed()
. Esta función es especialmente útil para implementar controles continuos, como el movimiento de un personaje que siga moviéndose mientras el jugador mantenga una tecla presionada.
pygame.key.get_pressed()
devuelve una lista con el estado de todas las teclas del teclado, donde cada índice de la lista corresponde a una tecla, y su valor es True
si la tecla está presionada, o False
si no lo está.
Un ejemplo típico sería el movimiento continuo de un personaje mientras se presiona una tecla. Por ejemplo, si el jugador mantiene presionada la tecla de flecha izquierda, el personaje seguirá moviéndose hacia la izquierda hasta que la tecla se suelte.
En este ejemplo, el personaje se mueve de forma continua en la dirección de la tecla que se mantiene presionada. Si el usuario presiona y mantiene la tecla de flecha izquierda, el personaje se moverá hacia la izquierda. El mismo principio se aplica para las demás teclas de dirección.
import pygame
# Inicialización de Pygame
pygame.init()
# Dimensiones de la ventana
screen = pygame.display.set_mode((800, 600))
# Posición inicial del personaje
x, y = 400, 300
velocidad = 5
# Bucle principal del juego
running = True
while running:
# Captura de eventos
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Captura del estado del teclado
keys = pygame.key.get_pressed()
# Movimiento continuo del personaje
if keys[pygame.K_LEFT]:
x -= velocidad
if keys[pygame.K_RIGHT]:
x += velocidad
if keys[pygame.K_UP]:
y -= velocidad
if keys[pygame.K_DOWN]:
y += velocidad
# Dibuja la pantalla y el personaje
screen.fill((0, 0, 0)) # Fondo negro
pygame.draw.rect(screen, (0, 255, 0), (x, y, 50, 50)) # Personaje como un cuadrado verde
pygame.display.flip() # Actualiza la pantalla
pygame.time.delay(30) # Pausa para controlar la velocidad del juego
pygame.quit()