Menu
CoddyTech

Tourner avec les flèches

Leçon 21 sur 41 du cours Créer 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

Dirige le serpent avec les touches fléchées.

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

Appuie sur « Jouer » et appuie sur la flèche du bas : le serpent tourne vers le bas. Puis clique sur « Vérifier ».

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

Toutes les leçons de Créer des jeux avec Pygame

Entraînez-vous par vous-même : Playground Pygame