Menu
CoddyTech

Tourne avec les flèches

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

Le serpent tourne une fois par pression de touche ; lis donc les événements KEYDOWN pour connaître les flèches. Un dictionnaire associe chaque touche fléchée à sa direction :

TURNS = {
    pygame.K_LEFT: (-1, 0),
    pygame.K_RIGHT: (1, 0),
    pygame.K_UP: (0, -1),
    pygame.K_DOWN: (0, 1),
}

event.key in TURNS est vrai pour les quatre flèches, et TURNS[event.key] est la nouvelle direction. Un seul test remplace quatre instructions if :

elif event.type == pygame.KEYDOWN and event.key in TURNS:
    direction = TURNS[event.key]

Le haut correspond à (0, -1) : les lignes sont comptées vers le bas de la fenêtre, comme les pixels.

challenge icon

Défi

Facile
  1. Au-dessus de pygame.init(), ajoute le dictionnaire TURNS pour les quatre touches fléchées.
  2. Dans la boucle d’événements, lorsque la touche d’un événement KEYDOWN figure dans TURNS, définis direction sur sa valeur.

Essayez vous-même

import pygame

CELL = 20
COLS, ROWS = 24, 18

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:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    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