Déplacer un personnage en PyGame

Le déplacement d'un personnage est une des bases de l'interactivité dans un jeu.

    3ttr
  • Découverte

Chaque mouvement modifie la position du personnage en ajustant ses coordonnées (x, y) sur l'écran.

Mouvements horizontaux

  • Une augmentation de x le fait avancer vers la droite (+)
  • une diminution de x le fait reculer vers la gauche (-)

Mouvements verticaux

  • une augmentation de y le déplace vers le bas (+)
  • une diminution de y le fait monter (-)

C'est une bonne pratique de stocker la vitesse dans une variable. Ainsi, tu pourras changer la vitesse à laquelle le personnage se déplace à l'écran en changeant le nombre de pixels de chaque déplacement.

vitesse =  5

Voici comment gérer ces déplacements en PyGame avec les touches du clavier.

Capturer les entrées clavier

On utilise pygame.key.get_pressed() pour détecter les touches enfoncée :

    # Touches pressées en continu
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player_x -= vitesse
    if keys[pygame.K_RIGHT]:
        player_x += vitesse
    if keys[pygame.K_UP]:
        player_y -= vitesse
    if keys[pygame.K_DOWN]:
        player_y += vitesse

Exemple complet

import pygame
pygame.init()

# Initialisation de la fenêtre
largeur_ecran = 800
hauteur_ecran = 600
screen = pygame.display.set_mode((largeur_ecran, hauteur_ecran))
pygame.display.set_caption("Déplacement du personnage")

# Charger le personnage
player = pygame.image.load('player.png')

player_x = 100
player_y = 100
vitesse = 5

# Boucle de jeu
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    # Touches pressées en continu
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player_x -= vitesse
    if keys[pygame.K_RIGHT]:
        player_x += vitesse
    if keys[pygame.K_UP]:
        player_y -= vitesse
    if keys[pygame.K_DOWN]:
        player_y += vitesse
    
    screen.fill((0, 0, 0))  # Effacer l'écran
    screen.blit(player, (player_x, player_y))  # Afficher le personnage
    pygame.display.flip()  # Rafraîchir l'écran

pygame.quit()

Astuces

  • Utiliser pygame.key.get_pressed() permet un mouvement fluide.
  • Limiter la position du personnage pour qu'il ne sorte pas de l'écran.
  • Ajuster vitesse pour accélérer ou ralentir le déplacement.

Avec ces bases, ton personnage peut se déplacer librement à l’écran !

Pour aller plus loin