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.