Cibo
Fa parte della sezione Progetti del percorso Pygame di Coddy. Lezione 6 di 31.
Il cibo appare in una cella casuale, mai sul serpente. Scegli una cella casuale e riprova finché non capita sul corpo:
def new_food(body):
while True:
cell = (random.randrange(COLS), random.randrange(ROWS))
if cell not in body:
return cellrandom.randrange(COLS) è un numero intero da 0 a COLS - 1: ogni colonna, ma mai oltre il bordo. return termina la funzione e, con essa, il ciclo, non appena viene trovata una cella libera.
cell not in body controlla l'intera lista in una volta sola.
Sfida
Facile- Aggiungi
import randomall’inizio. - Scrivi
new_food(body)come sopra, sottodraw_cell. - Dopo
direction, impostafood = new_food(body). - Dopo il riempimento, disegna il cibo in rosso
(235, 80, 80).
Provalo tu
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()
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Progetti
Esercitati da solo: Playground Pygame