Jeu vidéo
Pac-Man
Un vrai jeu vidéo, jouable en ligne : Pac-Man recréé à deux en Python. J'ai écrit le moteur : la simulation à 60 images par seconde, l'IA des quatre fantômes et les labyrinthes générés.
Le projet
Une recréation du Pac-Man de 1980, faite en binôme à l’École 42 : des labyrinthes générés, quatre fantômes avec chacun leur personnalité, un mode duo, des scores sauvegardés et des dessins faits à la main.
Le jeu est jouable sans rien installer : des versions Linux et Mac sont publiées sur itch.io.
Ma partie : le moteur de jeu
Nous avons séparé le projet en deux. Mon binôme a fait les écrans, le rendu, le son et les animations. J’ai fait le moteur du jeu :
- la simulation (60 images par seconde) : déplacements, collisions, pac-gommes, vies, niveaux ;
- l’IA des quatre fantômes, comme dans l’original. Chaque fantôme alterne des phases : dispersion (il rejoint son coin), poursuite (chacun a sa stratégie : Blinky fonce sur Pac-Man, Pinky vise devant lui, Inky le prend à revers, Clyde garde ses distances) et fuite après une super pac-gomme ;
- le déplacement des fantômes : le labyrinthe devient un graphe (chaque case est un nœud relié à ses voisins), et chaque fantôme y fait un parcours en largeur (BFS) pour trouver le pas qui le rapproche de sa cible ;
- la fabrique de labyrinthes, à partir d’un générateur imposé ou de labyrinthes classiques ;
- la session de jeu : modes solo et duo (le joueur 2 contrôle un fantôme).
L’architecture
Le moteur ne sait pas dessiner, et le rendu ne sait pas jouer. À chaque image, le moteur écrit un état du jeu unique, et l’affichage se contente de le lire. Les deux parties ne partagent rien d’autre. Résultat : nous avons pu travailler en parallèle sans nous gêner, et tester le moteur sans écran.
Le jeu ne plante jamais au démarrage : il vérifie ses fichiers au lancement, et une configuration invalide est remplacée par des valeurs sûres.
Ce que j’ai appris
- Découper un projet pour travailler à deux : un contrat clair entre les deux parties vaut mieux que du code partagé.
- Livrer un vrai produit : packager le jeu en exécutable (PyInstaller) et le publier pour que n’importe qui puisse y jouer.