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 cellrandom.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.
Aufgabe
Einfach- Füge oben
import randomhinzu. - Schreibe
new_food(body)wie oben unterdraw_cell. - Setze nach
directionfood = new_food(body). - 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()
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