Menu
CoddyTech

Gira con las flechas

Lección 21 de 41 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

Dirige la serpiente con las teclas de flecha.

  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.

Pulsa «Jugar» y pulsa la flecha hacia abajo: la serpiente gira hacia abajo. Después, pulsa «Comprobar».

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()

Todas las lecciones de Crea juegos con Pygame

Practica por tu cuenta: Playground de Pygame