Gira con las flechas
Lección 21 de 40 del curso Crea juegos con Pygame de Coddy.
La serpiente gira una vez por cada pulsación de tecla, así que lee las flechas de los eventos KEYDOWN. Un diccionario asigna a cada tecla de flecha su dirección:
TURNS = {
pygame.K_LEFT: (-1, 0),
pygame.K_RIGHT: (1, 0),
pygame.K_UP: (0, -1),
pygame.K_DOWN: (0, 1),
}event.key in TURNS es verdadero para las cuatro flechas, y TURNS[event.key] es la nueva dirección. Una comprobación reemplaza cuatro instrucciones if:
elif event.type == pygame.KEYDOWN and event.key in TURNS:
direction = TURNS[event.key]Arriba es (0, -1): las filas cuentan hacia abajo en la ventana, como los píxeles.
Desafío
Fácil- Encima de
pygame.init(), añade el diccionarioTURNSpara las cuatro flechas. - En el bucle de eventos, cuando la tecla de un evento KEYDOWN esté en
TURNS, establecedirectionen su valor.
Pruébalo tú mismo
import pygame
CELL = 20
COLS, ROWS = 24, 18
pygame.init()
screen = pygame.display.set_mode((COLS * CELL, ROWS * CELL))
pygame.display.set_caption("Snake")
clock = pygame.time.Clock()
def draw_cell(cell, color):
col, row = cell
pygame.draw.rect(screen, color, (col * CELL + 1, row * CELL + 1, CELL - 2, CELL - 2))
head = (5, 9)
direction = (1, 0)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
head = (head[0] + direction[0], head[1] + direction[1])
screen.fill((30, 30, 46))
draw_cell(head, (180, 255, 160))
pygame.display.flip()
clock.tick(10)
pygame.quit()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Crea juegos con Pygame
3Cuadrículas y listas
Una cuadrícula de celdasPaso a pasoPractica por tu cuenta: Playground de Pygame