Mit den Pfeilen abbiegen
Lektion 21 von 41 im Kurs Spiele mit Pygame erstellen von Coddy.
Die Schlange dreht sich bei jedem Tastendruck einmal, lies daher die Pfeiltasten 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.
Aufgabe
EinfachSteuere die Schlange mit den Pfeiltasten.
- Füge oberhalb von
pygame.init()das WörterbuchTURNSfür die vier Pfeiltasten hinzu. - Setze in der Ereignisschleife
directionauf den Wert des Schlüssels, wenn der Schlüssel eines KEYDOWN-Ereignisses inTURNSenthalten ist.
Drücke „Spielen“ und dann die Pfeiltaste nach unten: Die Schlange biegt nach unten ab. Drücke anschließend „Prüfen“.
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 Spiele mit Pygame erstellen
3Raster und Listen
Ein Raster aus ZellenSchritt für SchrittÜbe selbstständig: Pygame-Playground