Menu
CoddyTech

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.

challenge icon

Desafío

Fácil
  1. Encima de pygame.init(), añade el diccionario TURNS para las cuatro flechas.
  2. En el bucle de eventos, cuando la tecla de un evento KEYDOWN esté en TURNS, establece direction en 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()
quiz iconPonte a prueba

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

Practica por tu cuenta: Playground de Pygame