Chomper

GW-Basic, utilisé par PC-Basic

Programme avec Graphique et Texte

PC-BASIC

À 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.

MAKE.BAS

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 :

CHOMPER.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.