Menu
CoddyTech

Eine Körperliste

Lektion 23 von 40 im Kurs Spiele mit Pygame erstellen von Coddy.

Die Schlange ist eine Liste von Zellen, mit dem Kopf zuerst:

body = [(5, 9), (4, 9), (3, 9)]

Um dich zu bewegen, füge vorne den neuen Kopf hinzu und entferne die letzte Zelle. Jede Zelle dazwischen bleibt an ihrer Stelle, sodass der Körper dem Kopf folgt:

x = body[0][0] + direction[0]
y = body[0][1] + direction[1]
body.insert(0, (x, y))
body.pop()

body.insert(0, item) setzt das Element an Index 0. body.pop() entfernt das letzte Element. body[0] ist der Kopf und body[1:] ist der Rest.

Zeichne den Rest in einem dunkleren Grün und den Kopf zuletzt, damit er oben liegt.

challenge icon

Aufgabe

Einfach
  1. Ersetze head = (5, 9) durch body = [(5, 9), (4, 9), (3, 9)].
  2. Berechne in jedem Frame den neuen Kopf (x, y) aus body[0], füge ihn am Anfang ein und entferne das letzte Element.
  3. Zeichne jede Zelle von body[1:] in (120, 220, 120) und anschließend body[0] in (180, 255, 160).

Probier es selbst

import pygame

CELL = 20
COLS, ROWS = 24, 18
TURNS = {
    pygame.K_LEFT: (-1, 0),
    pygame.K_RIGHT: (1, 0),
    pygame.K_UP: (0, -1),
    pygame.K_DOWN: (0, 1),
}

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:
    moving = direction
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN and event.key in TURNS:
            turn = TURNS[event.key]
            if turn != (-moving[0], -moving[1]):
                direction = turn

    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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Spiele mit Pygame erstellen

Übe selbstständig: Pygame-Playground