Nourriture
Leçon 24 sur 41 du cours Créer 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
FacilePlace la nourriture sur la grille.
- Ajoute
import randomen haut, puisnew_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).
Appuie sur « Jouer » : une cellule rouge apparaît quelque part en dehors du serpent. Puis appuie sur « Vérifier ».
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()
Toutes les leçons de Créer des jeux avec Pygame
Entraînez-vous par vous-même : Playground Pygame