Menu
CoddyTech

Futter

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

Das Futter erscheint in einer zufälligen Zelle, niemals auf der Schlange. Wähle eine zufällige Zelle und versuche es erneut, solange sie auf dem Körper liegt:

def new_food(body):
    while True:
        cell = (random.randrange(COLS), random.randrange(ROWS))
        if cell not in body:
            return cell

random.randrange(COLS) ist eine ganze Zahl von 0 bis COLS - 1: jede Spalte, aber niemals eine über den Rand hinaus. return beendet die Funktion und damit auch die Schleife, sobald eine freie Zelle gefunden wird.

cell not in body überprüft die gesamte Liste auf einmal.

challenge icon

Aufgabe

Einfach
  1. Füge oben import random ein.
  2. Schreibe new_food(body) wie oben unterhalb von draw_cell.
  3. Setze nach direction food = new_food(body).
  4. Zeichne nach dem Füllen das Essen in Rot (235, 80, 80).

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


body = [(5, 9), (4, 9), (3, 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

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

    screen.fill((30, 30, 46))
    for cell in body[1:]:
        draw_cell(cell, (120, 220, 120))
    draw_cell(body[0], (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 Projekte

Übe selbstständig: Pygame-Playground