Menu
CoddyTech

Mit den Pfeiltasten abbiegen

Teil des Abschnitts Projekte der Pygame-Journey von Coddy. Lektion 3 von 31.

Die Schlange biegt sich bei jedem Tastendruck einmal, lies also die Pfeile aus den KEYDOWN-Ereignissen aus. Ein Wörterbuch ordnet jeder Pfeiltaste ihre Richtung zu:

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 ist für die vier Pfeiltasten wahr, und TURNS[event.key] ist die neue Richtung. Eine Prüfung ersetzt vier if-Anweisungen:

elif event.type == pygame.KEYDOWN and event.key in TURNS:
    direction = TURNS[event.key]

Oben ist (0, -1): Die Zeilen werden im Fenster abwärts gezählt, wie Pixel.

challenge icon

Aufgabe

Einfach
  1. Füge oberhalb von pygame.init() das Dictionary TURNS für die vier Pfeiltasten hinzu.
  2. Setze in der Ereignisschleife direction auf den Wert des Schlüssels, wenn der Schlüssel eines KEYDOWN-Ereignisses in TURNS enthalten ist.

Probier es selbst

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

Alle Lektionen in Projekte

Übe selbstständig: Pygame-Playground