Mangia e cresci
Lezione 25 di 40 del corso Crea giochi con Pygame di Coddy.
Quando la nuova testa raggiunge il cibo, il serpente lo mangia. Crescere consiste nella mossa che hai già, meno una riga: nel passaggio in cui mangia, salta l'estrazione e la coda rimane.
body.insert(0, (x, y))
if (x, y) == food:
score += 1
food = new_food(body)
else:
body.pop()Le tuple confrontano gli elementi uno per uno, quindi (x, y) == food è vero quando sia la colonna sia la riga corrispondono.
Mostra il punteggio come nell'ultimo gioco: un carattere creato prima del ciclo e f"Score: {score}" visualizzato a ogni fotogramma in (8, 6).
Sfida
Medio- Prima del ciclo crea
font = pygame.font.Font(None, 32)escore = 0. - Dopo aver inserito la nuova testa: se si trova sul cibo, aggiungi 1 al punteggio e posiziona nuovo cibo; altrimenti rimuovi la coda.
- Visualizza
f"Score: {score}"in(240, 240, 240)e disegnalo in(8, 6).
Provalo tu
import random
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))
def new_food(body):
while True:
cell = (random.randrange(COLS), random.randrange(ROWS))
if cell not in body:
return cell
body = [(5, 9), (4, 9), (3, 9)]
direction = (1, 0)
food = new_food(body)
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))
draw_cell(food, (235, 80, 80))
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()
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Crea giochi con Pygame
3Griglie ed elenchi
Una griglia di cellePasso dopo passoEsercitati da solo: Playground Pygame