Nourriture
Leçon 24 sur 40 du cours Créez des jeux avec Pygame de Coddy.
La nourriture apparaît dans une cellule aléatoire, jamais sur le serpent. Choisis une cellule aléatoire et réessaie tant qu’elle tombe sur le corps :
def new_food(body):
while True:
cell = (random.randrange(COLS), random.randrange(ROWS))
if cell not in body:
return cellrandom.randrange(COLS) est un nombre entier compris entre 0 et COLS - 1 : chaque colonne, sans jamais dépasser le bord. return met fin à la fonction, et à la boucle avec elle, dès qu’une cellule libre est trouvée.
cell not in body vérifie toute la liste en une seule fois.
Défi
Facile- Ajoute
import randomen haut. - Écris
new_food(body)comme ci-dessus, sousdraw_cell. - Après
direction, définisfood = new_food(body). - Après le remplissage, dessine la nourriture en rouge
(235, 80, 80).
Essayez vous-même
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()
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Créez des jeux avec Pygame
Entraînez-vous par vous-même : Playground Pygame