Menu
CoddyTech

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 cell

random.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.

challenge icon

Défi

Facile
  1. Ajoute import random en haut.
  2. Écris new_food(body) comme ci-dessus, sous draw_cell.
  3. Après direction, définis food = new_food(body).
  4. 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()
quiz iconTestez-vous

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