Chomper
GW-Basic, utilisé par PC-Basic
Programme avec Graphique et Texte
À l'instar de Pong et Breakout, Pac-Man possède une riche histoire qui remonte presque aux débuts de l'industrie du jeu vidéo.
Développé et commercialisé par la
société japonaise Namco en 1980, Pac-Man a rapidement détrôné le très populaire
Asteroids pour devenir le jeu d'arcade le plus vendu de son époque.
Le
principe de Pac-Man est à la fois simple et révolutionnaire.
Vous guidez un Pac-Man affamé à travers un labyrinthe, en avalant des pac-gommes aussi vite et efficacement que possible, tout en évitant les ennemis – monstres et fantômes (Blinky, Pinky, Inky et Clyde, chacun avec un comportement différent.) – qui patrouillent constamment autour de la nourriture.
Une collision avec un ennemi vous
fait perdre une vie ; si vous perdez toutes vos vies, la partie est terminée.
Anecdote intéressante : l'idée de Pac-Man est née d'une part de pizza.
En 1979, un employé de Namco nommé Toru Iwatani, les yeux cernés par de longues heures de programmation, a posé son regard sur une part de pizza à laquelle il manquait plusieurs parts.
La pizza ressemblait vaguement à
une bouche ouverte pour le jeune Iwatani, qui eut soudain des visions d'une
petite bouche électronique lumineuse se déplaçant et dévorant tout sur son
passage.
CHOMPER.BAS, dont le code est présenté ci-dessous, est loin
d'être un clone de Pac-Man ; en fait, comme nous le verrons, CHOMPER.BAS
repousse les limites d'une approche GW-BASIC sans PEEK-&-POKE, démontrant à quel
point il est difficile de programmer un jeu rapide.
CHOMPER.BAS est un programme assez
complexe, nécessitant un second programme – ainsi que l'aide de
POSITION.BAS – pour sa construction. Il est
donc plus judicieux de présenter le code par segments plutôt que de le lister en
une seule fois.
Prenons l'exemple du labyrinthe : si vous jouez à Pac-Man,
vous remarquerez que les éléments qui le composent, ainsi que les autres
accessoires (comme les points de vie), possèdent un style unique et cohérent, et
se répètent sur tout l'écran.
Cela pose problème : si votre
premier réflexe a peut-être été d'utiliser POSITION.BAS pour dessiner rapidement
un labyrinthe que le personnage contrôlé par le joueur pourra parcourir, il est
en réalité bien plus logique, d'un point de vue stylistique, de créer un
programme qui permette non seulement de dessiner facilement avec des éléments de
labyrinthe déjà « préfabriqués », mais aussi d'exporter votre dessin vers un
autre programme, à l'instar de POSITION.BAS (et
GRID.BAS, qui sera abordé dans une section ultérieur).
Un tel
programme, appelé MAKE.BAS, est présenté ci-dessous.
Après avoir demandé à l'utilisateur l'écran sur lequel il souhaite dessiner (7 ou 9) ainsi que la couleur des pièces du labyrinthe (de 1 à 15), ces pièces sont dessinées à l'écran puis stockées en mémoire grâce à plusieurs instructions GET (voir lignes 20 à 570).
Notez que les lignes de code permettant de dessiner ces pièces et de les enregistrer en mémoire sont elles-mêmes stockées dans un tableau de chaînes de caractères appelé START$, dont le contenu est écrit dans un fichier séquentiel à l'aide de l'instruction PRINT# (voir lignes 660 à 677).
À partir de la ligne 700, l'utilisateur prend le contrôle de l'écran et dessine une image à l'aide des éléments préfabriqués du labyrinthe.
Les touches + et - permettent de
parcourir les onze formes disponibles ; la barre d'espace permet de graver une
forme à l'écran et d'écrire son code dans le fichier séquentiel ouvert (voir la
sous-routine des lignes 1200 à 1510 pour plus de détails).
Une fois le
dessin terminé, la touche Échap ferme le fichier séquentiel, qui est alors prêt
à être utilisé pour créer un jeu de type Pac-Man.
Plutôt que d'appeler le jeu Pac-Man (ce qu'il n'est absolument pas), nous l'appellerons Chomper.
La première étape pour créer Chomper consiste à créer un fichier séquentiel nommé CHOMPER.BAS dans MAZEMAKE.BAS.
Ce fichier contient le code d'un labyrinthe simple, rempli de pastilles que notre petit personnage Chomper pourra dévorer.
Voici le fichier séquentiel CHOMPER.BAS, tel qu'il apparaît dans son fichier source MAZEMAKE.BAS :
Pour l'instant, nous n'avons
fait que dessiner un labyrinthe ; il nous faut maintenant créer un jeu autour.
Nous devons donc ajouter des éléments graphiques. Le personnage Chomper,
semblable à Pac-Man, doit pouvoir être orienté dans quatre directions : haut,
bas, gauche et droite.
De plus, il doit avoir deux expressions pour chaque direction : la bouche grande ouverte et la bouche entrouverte.
Enfin, au démarrage du jeu,
Chomper est immobile sous la forme d'un cercle ombré ; il faudra donc également
l'afficher à l'écran.
Les lignes de code suivantes dans CHOMPER.BAS
gèrent le dessin des différentes expressions de Chomper, chacune étant stockée
dans un tableau distinct (et nommé de manière descriptive).
Sans surprise, de nombreuses instructions CIRCLE sont nécessaires.
Lignes 355 - 595
Aucun jeu Pac-Man ne serait complet sans au moins un ennemi, tel qu'un fantôme malicieux.
En raison de la tendance du
GW-BASIC à produire un scintillement des objets en mouvement, nous ne créerons
dans Chomper qu'un seul fantôme qui errera sur l'écran, chargé d'éloigner notre
Chomper affamé de ses précieuses pastilles jaunes.
Le fantôme de
CHOMPER.BAS a été créé à l'aide de POSITION.BAS.
Pour un rendu visuel plus intéressant, à chaque exécution du programme, le fantôme est peint aléatoirement en vert ou en rouge (voir ligne 600).
Lignes 600 - 650
Chaque jeu nécessite un écran titre, avec les instructions de jeu.
Plusieurs Chompers ornent notre écran titre. De plus, le nombre de vies initiales est fixé à trois et le score à zéro.
Lignes 750 - 800 et 1900
Ensuite, l'écran « Préparez-vous !» : le labyrinthe s'affiche, le Chomper est représenté au repos et le nombre de vies est indiqué en icônes Chomper en bas de l'écran.
Si le nombre de vies tombe à zéro, la partie est terminée.
Lignes 2000 - 2080
La variable DIRECTION, déclarée et initialisée à la ligne 2070, indique la direction du Chomper :
1 = gauche, 2 = droite, 3 = haut et 4 = bas.
L’animation du Chomper est ainsi produite à l’écran.
Enfin, comme d’habitude, une instruction INKEY$ (ligne 2100) attend une saisie au clavier.
Lignes 2100 - 2104
Le fantôme, ainsi que quelques indications destinées à l'utilisateur, doivent également apparaître.
De plus, si l'utilisateur appuie sur la touche Échap, le programme se termine instantanément, sans poser de questions.
Lignes 2105 -2110
Nous utiliserons plusieurs fonctions de pointage pour vérifier en continu si le Chompeur entre en contact avec le mur (représenté en bleu) ou s'il avale une pastille (représentée en jaune) ; différents points autour du Chompeur sont surveillés à cet effet.
Si une pastille est consommée, elle doit être immédiatement effacée de l'écran ; une boucle avec un cercle noir qui s'agrandit rapidement effectue cette opération.
Lignes 2120 - 2240
Puisqu'il s'agit de pastilles, les avaler toutes permet de terminer le niveau (et le jeu Chomper, puisqu'il n'y a qu'un seul niveau).
Notez qu'à chaque pastille avalée, le score du joueur augmente de dix.
Atteignez un certain score (le nombre total de pastilles multiplié par dix) et le niveau est validé.
Pour célébrer la victoire, l'instruction PALLETE modifie l'attribution des couleurs, faisant ainsi clignoter les contours du labyrinthe à la manière de Pac-Man.
Lignes 2250 - 2730
Pour l'instant, nous ne pouvons même pas déplacer notre petit Chomper, et encore moins manger toutes les granulés jaunes.
Remédions à cela grâce au code ci-dessous.
Lignes 2310 - 2385
Les fantômes, s'ils existent, sont immatériels, mais dans Pac-Man et Chomper, si un fantôme vous touche, vous perdez une vie.
Les lignes suivantes, qui utilisent plusieurs instructions POINT, servent à détecter si le petit Chomper est entré en collision avec le fantôme.
Lignes 2390 - 2420
Mais le fantôme doit pouvoir se déplacer, sinon il n'y a guère de défi – ce que vous, en tant que joueur passionné, préféreriez sans doute.
Néanmoins, donnons un peu de liberté à notre créature immatérielle, tout en l'empêchant de traverser complètement les murs.
Lignes 2425 - 2500
Voilà, le jeu Chomper est
terminé.
Il existe de nombreuses pistes d'amélioration. Créez un
labyrinthe entièrement nouveau pour ce premier niveau.
Ajoutez un autre niveau.
Modifiez l'apparence du fantôme ou ses mouvements.
Intégrez différents types de pastilles dans le labyrinthe, comme celles qui offrent une vie supplémentaire au Chomper ; mieux encore, créez de nouvelles parties du labyrinthe dans MAZEMAKE.BAS, pour que Chomper se démarque nettement de Pac-Man.
Pensez également à optimiser le code afin d'accélérer le jeu et de réduire le scintillement constant et agaçant.