C PACMAN

Transcription

C PACMAN
BECART Jean-Roch
05/06/2002
IUT Informatique d'AMIENS
C PACMAN
Sommaire
X
Introduction
-->Histoire
-->Fonctionnement
X
X
X
Programmation
-->Decors (carte...)
-->Pacman (mouvement...)
-->Intelligence artificielle(fantômes…)
X
X
X
X
Conclusion
X
Sources commentées
X
Introduction.
Histoire:
Pas la peine de s'étendre sur le but du jeu, tout le monde connaît. Manger les
bonbons, échapper aux fantômes, manger les gros bonbons pour pouvoir dévorer les
fantômes pendant qu'ils sont bleus.
Sorti en 1980, Pac Man est né de l'imagination de Toru Iwantani. Celui-ci
observa une pizza dont il venait de se couper une tranche et l'association d'idée naquit.
Le nom du personnage vient de paku-paku, qui signifie " miam-miam " en japonais. Le
jeu devait s'appeler à l'origine Puck Man, mais fût rebaptisé Pac Man de peur que les
anglophones ne fassent de jeu de mot déplacé. Pac Man fut programmé en un an et
demi par une équipe de 5 personnes dirigée par Hideyuki Mokajima et publié en
premier lieu par Namco (Atari refusa le projet !), puis par Midway pour les Etats-Unis.
Pac Man est le jeu vidéo le plus célèbre de l'histoire, c'est donc d'un phénomène
de société qu'il s'agit, d'autant que pour la première fois, les amateurs du jeu comptent
autant de femmes que d'hommes. Pac Man fut le premier jeu dont le héros connut une
carrière extérieure au jeu lui-même. Les produits dérivés se vendirent à des millions
d'exemplaires. Une série animée fut crée, des chansons lui furent dédiée, sans parler
des innombrables suites et clones du jeu qui furent crées, sans égaler l'impact de
l'original : Ms Pac Man, Super Pac Man, Pac Mania, Pac Land, etc…
Peu de gens sur cette planète n'ont jamais joué à Pac Man. Quant au jeu luimême, que dire sinon que c'est purement génial, totalement pacifique, compréhensible
en un instant, et que les bruitages du jeu constituent le modèle absolu du genre.
Par contre, sur les quatre fantômes, seuls deux ont une intelligence artificielle, et
non pas trois.
1)Blinky poursuit Pac Man
2)Pinky tente de l'intercepter.
3)Les deux autres se déplacent au hasard. Un point c'est tout.
Rappel: Blinky est le fantôme rouge, Pinky le rose, Inky le bleu et Clyde l’orange.
Fonctionnement de notre jeu:
Notre jeu gère les scores pour une pastille rammassé 10 points pour un fantôme
mangé 500 points. Si vous mangé une pastille Jaune vous êtes invincible et vous
pouvez manger les fantômes qui ont changé de couleur en bleu clair pendant environ
15 secondes.
Nous avons fait un passage au milieu en haut et bas qui permet d’aller de haut
en bas et de bas en haut de l’écran.
A chaque fois qu’un fantôme touchent le pacman celui perd une vie sur les 3
dont il dispose et les fantôme et le pacman reprennent leurs positions d’origine.
Programmation.
Décors:
Pour les décors c’est-à-dire l’aspect graphique nous avons utilisé plusieurs
procédés. Tout d’abord pour l’intro graphique nous chargeons simplement une image
BMP avec les fonctions incluses dans le fichier PALETTE.H, une fois l’image chargée
nous faisons une rotations de la palette, ce qui à pour effet un changement des
couleurs avec une impression de clignotement.
Pour le niveau c’est la même chose nous chargeons une image BMP contenant
les détails graphique du jeu. C’est sur cette image que ce déplace les fantômes ainsi
que la Pacman. On y affiche aussi le score et le nombre de vie et optionnellement le
niveau atteint dans le jeu. Pour l’affichage du score et du nombre de vie nous utilisons
une structure chargé d’afficher seulement une partie d’une image, car en faite le fichier
num320.bmp comprend nos 10 chiffres de 0 à 9 chacun faisant 9*13 pixels donc cela a
l’avantage de n’avoir qu’un seul fichier image au lieu de 10. Pour l’affichage on écrit
dans VGA qui est le mode graphique.
Exemple :
VGA[screen_offset+y+x]=bmp.data[bitmap_offset+y+x]
Affiche à l’écran en coordonnée screen_offset + coordonné du pixel x ;y le pixel de
l’image en bitmap_offset + coordonnée du pixel x ;y.
Pour les fantômes et le Pacman nous utilisons une tableau contenant
directement les couleurs de chaque objet. Ici encore cela s’avère pratique puisque ce
sont de petite image ne comprenant pas beaucoup de couleur, ensuite ces images ou
aussi appelé sprit sont facile a manipuler c’est comme un tableau , on utilise des
boucles « for » imbriquées , on peut ainsi réalisé les 4 rotations du Pacman et l’animé
en changeant le sens de lecture du tableau ,horizontal/vertical ou en partant d’une fin
de ligne ou d’une fin de colonne. Pour cela on utilise l’instruction Pokeb qui écrit
directement en mémoire vidéo par le biais d’une intéruption (13h, mode MCGA 320*200
256 couleurs ).
Exemple :
pokeb(segment,coordonneés ,couleur)
• segment: correspond à l’adresse de la mémoire video.
• coordonnées :coordonnée a l’écran.
• couleur ; couleur du pixel à afficher.
Pacman:
Pour déplacer le pacman on fait 4 tests conditionnel pour déterminer la touche
correspondant au déplacement demandé. Tout de suite apres on test en lisant dans le
tableau en fonction de la position du pacman + direction désiré si on autorise le
déplacement. Si on lit 212 dans notre tableau c’est que l’on est face a un mur donc le
Pacman ne bouge pas.
Pour l’animation (quand aucune touche de déplacement est appuyé)on lit en
boucle 3 sprits qui correspondent respectivement à un Pacman ayant la bouche à
moitié ouverte, grande ouverte et fermé.
Intelligence artificielle (et deplacement des fantômes) :
Ayant voulu respecter les règles originales du Jeu nous avons dans notre version
2 fantômes qui se déplacent aléatoirement et 2 autres chargé d’intercepter le pacman.
Pour le deplacement aléatoire nous utilisons un random compris de 0 à 3 qui
correspond à une direction. Une fois qu’une direction valable a été validé on continu
toujours dans cette direction jusqu'à rencontrer un mur. Des qu’un mur est atteint on fait
un random pour une nouvelle direction en evitant si cas le permet de retourner en
arrière.
Pour les 2 autres fantômes on test la position x et y du Pacman si elle est
inférieur ou supérieur on bouge le fantôme en conséquence. La différence de
déplacement entre les 2 fantômes réside dans l’ordre des tests l’un test d’abord la
position x et l’autre d’abord la position y.
Conclusion.
Ce projet nous à permis de nous familiariser et de nous perfectionner avec le
langage C. La réalisation d’un jeu est motivante ce qui rend passionnant la
programmation d’un tel projet, d’autant plus que le sujet n’est pas imposé.
Le C ou devrai-je dire TurboC ne nous a pas imposé de limite car tout ce dont
nous avions besoin était disponible.
Notre programme aurait pus gérer beaucoup plus de paramètre et être beaucoup
plus complet. Nous aurions pu gérer la fuite des fantômes, plusieurs niveaux, des
bonus, un fichier de highscore ainsi qu’une IA un peu plus poussé et peut etre aussi
une gestion du son.
Sources commentées.