Bienvenue dans le monde de PACMAN
![]()
Bien qu'étant assez ancien, Pacman est un jeu qui passionne toujours autant les foules. Les règles du jeu n'ont nul besoin d'être énoncées. On rappellera toutefois qu'un Pacman doit manger toutes les Pacgums dans un décor sans se faire manger par les Fantômes. Il est injuste me direz vous, qu'il ne puisse pas disposer d'une arme atomique qui pourrait tout pulvériser sur son passage. Et non! Pacman n'est pas totalement inoffensif. Lorsqu'il mange une des Super Pacgums qui se situe dans l'un des quatre coins du décor, il se fâche, devient méchant et peut, pendant un certain instant, dévorer sans aucune pitié ses poursuivants!
Plus qu'un jeu, Pacman est aussi un modèle de programmation. A la base le jeu parait simple à concevoir, mais au fur et à mesure de l'évolution du programme, des complexités apparaissent. Comment ne charger qu'un minimum d'images? Comment gérer le clavier pour déplacer le Pacman? Quel algorithme de poursuite doivent prendre les Fantômes pour suivre Pacman? Pour lui échapper? Et bien d'autres questions se posent. La Programmation Objet en JAVA est un solution élégante car elle s'adapte au problèmes qu'on désire résoudre.
![]()
La Programmation en JAVA:
Voici une présentation des différents objets qui compose le jeu : ObjetGraphique : Ce sont les objets qui compose le monde de Pacman; ils sont de plusieurs type :
- Mobile : Ils sont capable de se déplacer. Ils possèdent leur vie propre dans la mesure où ils sont "Threadés". Il s'agît en l'occurrence de :
- Pacman : Le Pacman peut se déplacer grâce à une gestion du clavier avec les touches numériques 2(bas),4(gauche),5(stop),6(droite) et 8(haut) (en implémentant KeyListener).
- Fantôme : Les fantômes se déplacent selon la puissance du Pacman. Si le Pacman est dans son état normal, alors les fantômes le poursuivent en allant vers sa direction en abscisse et en ordonnée, selon un degré de priorité imposé par les briques.Si un fantôme mange le Pacman, la variable vie est décrémentée et si cette dernière n'est pas nulle alors le Pacman est repositionné à sa position de départ. Sinon, la partie est finie. Dans le cas d'un SuperPacman, les fantômes fuient selon la méthode inverse. Si le Pacman mange un fantôme, alors la variable score augmente de 25 points et le fantôme est repositionné à sa position de départ.Les fantômes sont positionnés aux 4 coins de notre décor.
- ElementDuDecor : Ce sont les éléments qui ne changent pas tout au long de la partie. Ils constituent le décor. Il s'agît de :
- Brique : Les briques limitent l'évolution des fantômes et du Pacman.
- PacGum : Pacman les mange en passant dessus contrairement aux fantômes dont le passage n'a aucun effet sur ces dernières.Elles augmentent la variable score de 1 point.
- SuperPacGum : Si le Pacman mange une SuperPacGum alors, il devient durant un court instant un SuperPacman et son score augmente de 10.
- Sol : Lorsque le Pacman mange une PacGum ou une SuperPacGum alors, un objet de type sol la remplace.
GameManager : C'est un objet "Threadé" qui assure la gestion du jeu avec :
- l'affichage, en transmettant les objets graphiques à redessiner.
- la réinitialisation du jeu, lorsque le Pacman est mangé.
- la détection de la fin de la partie.
- une accélération de la vitesse des fantômes au cours du temps.
- une vie en plus tous les 250 points .
MonPacCanvas : C'est l'endroit où on dessine notre matrice "Decor" d'ObjetGraphique en placant en premier lieu le décor qui ne sera pas modifié par la suite pour les briques et qui remplacera les PacsGums ou les SuperPacGums par un objet de type Sol lorsqu'elles seront mangées par le Pacman. En second lieu, on place dans notre canvas le Pacman et les fantômes. On utilise la méthode du Double Buffer pour dessiner les objets graphiques dans notre canvas.
MaPacFrame : On y dessine notre canvas ainsi qu'un panel comportant deux labels permettant d'afficher le score et le nombre de vies restantes. On rafraichit constamment notre frame en la redessinant.
Decor : C'est notre matrice du décor qui renvoie la nature des objets à une position donnée.
Niveau : Il s'agît de la classe principale. C'est elle qui fixe le décor et lance le jeu.
Position : C'est une classe utilitaire qui permet de représenter et de comparer les positions des différents objets graphiques.
Direction : C'est également une classe utilitaire qui est utilisée exclusivement comme attribut statique des "Mobile", et qui définit les 4 directions possibles de déplacement.
Cette version de Pacman n'a pas la prétention de fournir toutes les options qui pourraient être proposées pour un tel jeu, mais elle peut facilement être transformée ou améliorée.Elle pourrait être améliorée par exemple, en ce qui concerne le choix de l'algorithme de poursuite des fantômes, le lancement d'une nouvelle partie à la fin du programme, des boutons pour choisir des options de jeu...
Elle peut être toutefois être transformée facilement en modifiant tout simplement la matrice de décor. Toutes ces améliorations pourraient facilement, tel était notre objéctif, faire l'objet d'un
nouveau projet sans que le nouveau programmeur n'ait à déchiffrer un code illisible. La Programmation Objet permettant une bonne maintenabilité du code.
Ceci dit, BONNE PARTIE! (et BONNE ANNEE!)
Last modified: Fri Dec 18 12:52:11 MET 1998