Menu
CoddyTech

Tourner avec les flèches

Fait partie de la section Projets du Journey Pygame de Coddy. Leçon 3 sur 31.

Le serpent tourne une fois par pression de touche ; il faut donc lire les flèches dans les événements KEYDOWN. 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] correspond à la nouvelle direction. Un seul test remplace quatre instructions if :

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

La direction vers le haut est (0, -1) : les rangées 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 flèches.
  2. Dans la boucle d’événements, lorsque la touche d’un événement KEYDOWN se trouve 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()

Toutes les leçons de Projets

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