Projet Jeu Pacman en Allegro

Création d'une réplique fonctionnelle du jeu Pacman en utilisant la bibliothèque graphique Allegro, en mettant en œuvre des mécaniques de déplacement, de collision et d’IA pour les fantômes.

Admin

10/1/20241 min read

Dans le cadre de mon Bachelor en informatique à l’ECE Paris (2023-2024)

🎯 Objectif

Création d'une réplique fonctionnelle du jeu Pacman en utilisant la bibliothèque graphique Allegro, en mettant en œuvre des mécaniques de déplacement, de collision et d’IA pour les fantômes. Mon rôle : développement complet, de la logique de jeu à l’intégration graphique et sonore.

💻 Réalisation technique

Stack utilisée

  • Langage : C (programmation procédurale avec structs pour les entités).

  • Bibliothèque : Allegro 5 (gestion de l’affichage, du son et des entrées clavier).

  • Outils : GCC pour la compilation, Audacity pour les effets sonores, Aseprite pour les sprites.

Fonctionnalités clés

  • Labyrinthe dynamique :

    • Génération à partir d’une matrice 2D (0 pour les murs, 1 pour les chemins, 2 pour les points).

    • Affichage via des tilesets personnalisés (murs en bleu, points en jaune).

  • Entités interactives :

    • Struct Entity pour Pacman et les fantômes (positions, directions, états).

    • Déplacement fluide avec vérification des collisions contre les murs.

  • IA des fantômes :

    • Algorithme de poursuite basique (déplacement aléatoire avec tendance vers Pacman).

    • Détection de collision entraînant la perte d’une vie.

  • Système de score :

    • Incrémentation lors de la collecte de points + affichage en temps réel.

    • Gestion des vies restantes (3 vies initiales).

🚧 Défis relevés

  • Optimisation des FPS : Synchronisation du rafraîchissement graphique avec al_rest() pour éviter les saccades.

  • Collisions précises : Utilisation de la position future de Pacman pour prévenir les traversées de murs (ex : vérification if (matrice[y+dy][x+dx] != 1)).

  • Intégration sonore : Boucle sonore non bloquante pour la musique d’ambiance (al_play_sample() avec gestion de canaux).

  • Debugging graphique : Résolution d’artefacts visuels causés par un double buffering mal configuré.

🚀 Fonctionnalités bonus

  • Animations : Rotation de Pacman en fonction de la direction (spritesheet avec 4 frames).

  • Sons immersifs : Bruitages pour la collecte de points, la mort et la victoire.

  • Menu interactif : Sélection de niveaux et tableau des scores avec al_draw_text().