Dans cet article, nous allons faire progresser notre projet de labyrinthe en ajoutant un personnage que le joueur pourra déplacer avec les touches du clavier. Nous allons d'abord charger une image fixe pour le personnage, la dessiner sur l'écran, puis ajouter la gestion des déplacements en fonction des entrées clavier.
Dans cette version, nous allons apprendre à:
Tout d'abord, il faut trouver ou créer une image pour représenter votre personnage. Par exemple, vous pouvez utiliser une image au format PNG d'un personnage de jeu vidéo. Assurez-vous que l'image est de taille similaire aux tuiles de votre labyrinthe (par exemple, 32x32 pixels).
Utilisez la fonction pygame.image.load() pour charger l'image du personnage, puis stockez-la dans une variable pour l'utiliser dans le jeu. Voici comment charger une image de personnage à partir d'un fichier :
# Charger l'image du personnage
image_personnage = pygame.image.load('personnage.png')
Veillez à ce que le fichier personnage.png soit dans le même dossier que votre script Python ou fournissez le chemin correct vers l'image.
Maintenant que l'image du personnage est chargée, nous devons la dessiner sur l'écran. Tout comme nous avons dessiné les tuiles du labyrinthe (les murs et le sol), nous allons utiliser la fonction blit() de PyGame pour afficher l'image du personnage à une position donnée.
Pour cela, nous devons choisir une position de départ pour le personnage. Par exemple, nous pouvons commencer au centre du labyrinthe, ou à une position spécifique comme (1, 1) (première colonne, première ligne).
# Position initiale du personnage (en pixels)
x_personnage = 32 # 2ème colonne (1 * taille de tuile)
y_personnage = 32 # 2ème ligne (1 * taille de tuile)
Pour dessiner l'image du personnage sur l'écran à cette position :
# Dessiner le personnage à sa position actuelle
fenetre.blit(image_personnage, (x_personnage, y_personnage))
Pour permettre au joueur de déplacer le personnage à l'aide des touches du clavier, nous devons :
Le déplacement du personnage se fait en utilisant les touches fléchées du clavier : gauche, droite, haut et bas (ou les touches zqsd). Chaque fois que l'utilisateur appuie sur une touche, le personnage se déplace d'une case dans la direction correspondante. En termes de pixels, cela signifie que la position du personnage sur l'écran est modifiée par exemple de 32 pixels (qui correspond à la taille d'une tuile) à chaque pression de touche.
Le nombre de pixels utilisés pour le déplacement de votre personnag représente en fait sa vitesse de déplacement. Au plus cette valeur est grande, au plus votre personnage se déplace rapidement à l'écran. A savoir que ses déplacements deviennent aussi moins fluides.
Généralement, la vitesse est stockée dans une variable, ce qui permet au jeu de la faire... varier (votre personnage poeut marcher, courir, 'manger un piment'...).
Avec x (position horizontale) et y (position verticale), les déplacements se font comme suit:
x = x - vitessex = x + vitessey = y - vitessey = y + viitesseUtiliser une vitesse égale à la taille de tes tuiles permet de synchroniser les mouvements du personnage avec la grille du labyrinthe pour un déplacement précis et aligné.
Dans PyGame, la fonction pygame.key.get_pressed() permet de détecter quelles touches sont pressées. Nous allons l'utiliser pour détecter les flèches du clavier (K_LEFT, K_RIGHT, K_UP, K_DOWN).
À chaque itération de la boucle de jeu, nous allons mettre à jour la position du personnage en fonction des touches pressées.
# Vitesse du personnage (combien de pixels il se déplace à chaque pression)
vitesse = 32 # Correspond à une case de la grille --> MODIFIEZ pour obtenir la bonne vitesse pour votre jeu
# Boucle de jeu principale
continuer = True
while continuer:
# Gestion des événements
for event in pygame.event.get():
if event.type == pygame.QUIT:
continuer = False
# Récupérer les touches pressées
touches = pygame.key.get_pressed()
# Mettre à jour la position du personnage en fonction des touches
if touches[pygame.K_LEFT]:
x_personnage -= vitesse # Déplacer vers la gauche
if touches[pygame.K_RIGHT]:
x_personnage += vitesse # Déplacer vers la droite
if touches[pygame.K_UP]:
y_personnage -= vitesse # Déplacer vers le haut
if touches[pygame.K_DOWN]:
y_personnage += vitesse # Déplacer vers le bas
# Remplir l'écran avec les murs et le sol
# ....
# Dessiner le personnage à sa nouvelle position
fenetre.blit(image_personnage, (x_personnage, y_personnage))
# Mettre à jour l'affichage
pygame.display.flip()
# Limiter le framerate
pygame.time.Clock().tick(60)
pygame.quit() # Quitter PyGame proprement
Récupération des touches pressées :
touches = pygame.key.get_pressed()
Cette fonction renvoie un tableau où chaque index correspond à une touche. Si la touche est enfoncée, l’index correspondant vaut True.
Déplacement du personnage :
K_LEFT) est pressée, on soustrait vitesse à x_personnage pour le déplacer vers la gauche.K_RIGHT) est pressée, on ajoute vitesse à x_personnage pour le déplacer vers la droite, et ainsi de suite pour les directions haut et bas.Rafraîchissement de l’écran : Après chaque déplacement, le labyrinthe et le personnage sont redessinés dans leur nouvelle position. La fonction pygame.display.flip() met à jour l'affichage.
Limitation de la vitesse : Pour éviter que le jeu ne tourne trop vite, nous limitons le nombre d'images par seconde avec pygame.time.Clock().tick(60) (ici, 60 FPS).
Collision avec les murs : Pour l’instant, le personnage peut passer à travers les murs. Vous pouvez ajouter une gestion des collisions en vérifiant si la case vers laquelle le personnage veut se déplacer est un mur avant de modifier ses coordonnées.
Animations du personnage : Si vous voulez aller plus loin, vous pouvez ajouter une animation au personnage lorsqu'il se déplace en changeant son sprite à chaque pas.
Limites de la fenêtre : Assurez-vous que le personnage ne puisse pas sortir des limites du labyrinthe en ajoutant des vérifications sur x_personnage et y_personnage.
Orientation: Quand votre personnage se déplace dans différentes directions, il sera nécessaire de modifier son orientation pour que le rendu soit plus réaliste.
Dans cet article, nous avons ajouté un personnage à notre jeu PyGame en le dessinant à partir d'une image et en gérant ses déplacements au clavier. C’est une base essentielle pour rendre le jeu interactif et amusant pour les joueurs. Vous pouvez maintenant enrichir le jeu en améliorant la gestion des collisions, en ajoutant des niveaux ou même des ennemis pour rendre le jeu plus complexe !