Gérer les événements : les touches du clavier

Principe

Ce sont les événements de types pygame.KEYDOWN et pygame.KEYUP qui permettent d'intercepter l'utilisation des touches du clavier.

Il faut ensuite déterminer quelle touche a été enfoncée ou relâchée. Cela se fait avec les propriétés dict['unicode'] ou key de l'objet event :

Exemples

Affichage de la valeur des touches enfoncées

import pygame
fen = pygame.display.set_mode((800,600))
couleur_fond = (0, 0, 0)
x = 400
y = 300

fen.fill(couleur_fond)

continuer = True
while continuer :
    for evenement in pygame.event.get():
        if evenement.type == pygame.QUIT:
            continuer = False
        if evenement.type == pygame.KEYDOWN:
            print("Le code généré est le suivant : ")
            print("     - event.dict['unicode'] : " + event.dict['unicode'])
            print("     - event.key : " + str(event.key))
            print("     - pygame.key.name(event.key) : " + pygame.key.name(event.key))
pygame.display.quit()

Déplacement d'un rond à l'aide des touches du clavier

import pygame
fen = pygame.display.set_mode((800,600))
couleur_rond = (0, 255, 255)
couleur_fond = (0, 0, 0)

# coordonnées du rond
x = 400
y = 300

fen.fill(couleur_fond)
pygame.draw.circle(fen, couleur_rond, (x, y), 40)
pygame.display.flip()

continuer = True
while continuer :
    for evenement in pygame.event.get():
        if evenement.type == pygame.QUIT:
            continuer = False
        if evenement.type == pygame.KEYDOWN:
            # calcul des nouvelles coordonnées du rond
            if evenement.key == pygame.K_UP:
                y = y-5
            elif evenement.key == pygame.K_DOWN:
                y = y + 5
            elif evenement.key == pygame.K_LEFT:
                x = x-5
            elif evenement.key == pygame.K_RIGHT:
                x = x + 5
            # mise à jour de l'affichage
            fen.fill(couleur_fond)
            pygame.draw.circle(fen, couleur_rond, (x, y), 40)
            pygame.display.flip()
pygame.display.quit()