Menu
CoddyTech

Futter

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

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 jenseits des Randes. return beendet die Funktion und damit auch die Schleife, sobald eine freie Zelle gefunden wird.

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

challenge icon

Aufgabe

Einfach
  1. Füge oben import random hinzu.
  2. Schreibe new_food(body) wie oben unter draw_cell.
  3. Setze nach direction food = new_food(body).
  4. Zeichne nach dem Füllen das Futter 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 Spiele mit Pygame erstellen

Übe selbstständig: Pygame-Playground