Menu
CoddyTech

La liste du corps

Leçon 23 sur 40 du cours Créez des jeux avec Pygame de Coddy.

Le serpent est une liste de cellules, en commençant par la tête :

body = [(5, 9), (4, 9), (3, 9)]

Pour avancer, ajoute la nouvelle tête au début et supprime la dernière cellule. Chaque cellule intermédiaire reste à sa place, de sorte que le corps suit la tête :

x = body[0][0] + direction[0]
y = body[0][1] + direction[1]
body.insert(0, (x, y))
body.pop()

body.insert(0, item) place l’élément à l’index 0. body.pop() supprime le dernier élément. body[0] est la tête et body[1:] est le reste.

Dessine le reste en vert plus foncé, puis la tête en dernier, pour qu’elle soit au-dessus.

challenge icon

Défi

Facile
  1. Remplace head = (5, 9) par body = [(5, 9), (4, 9), (3, 9)].
  2. À chaque image, calcule la nouvelle tête (x, y) à partir de body[0], insère-la au début et retire la queue.
  3. Dessine chaque cellule de body[1:] en (120, 220, 120), puis body[0] en (180, 255, 160).

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))


head = (5, 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

    head = (head[0] + direction[0], head[1] + direction[1])

    screen.fill((30, 30, 46))
    draw_cell(head, (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