Menu
CoddyTech

Gira con las flechas

Parte de la sección Proyectos del Journey de Pygame de Coddy. Lección 3 de 31.

La serpiente gira una vez por cada pulsación de tecla, así que lee las flechas de los eventos KEYDOWN. Un diccionario asigna cada tecla de flecha a 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 se 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()

Todas las lecciones de Proyectos

Practica por tu cuenta: Playground de Pygame