Voici un jeu d'animation inspiré d'un jeu d'arcades: deux pingouins travaillent au pôle, à classer des glaçons. Arrivent, un jour, trois glaçons renfermant des pépites d'or. Pour profiter de ce trésor, les pingouins doivent aligner les trois glaçons contenant les pépites.
L'un des pingouins, celui que commande le joueur, a fait cette découverte le premier et fera la première tentative, pendant que le second, rouge de colère, entre dans la réserve de glace et commence à tout casser. Le joueur devra donc piloter son pingouin de manière à lui faire aligner les glaçons en dépit du désordre semé par le second pingouin. Enfin, si le pingouin en colère parvient à attraper l'autre, la partie sera perdue. Ces quelques règles une fois fixées, passons à l'écriture du programme. Nous utiliserons ici le mode 0 de manière à profiter de l'intégralité de la palette couleurs de l'Amstrad: ce changement de mode est assuré par la ligne 10 du programme. Ensuite, nous ouvrirons, à la ligne 50, un tableau de mémorisation du jeu; celui-ci aura pour fonction de repérer en permanence la position de chaque glaçon durant le déroulement de la partie. Les principales variables seront ensuite initialisées des lignes 90 à 140. HJ et VJ correspondront à la position du pingouin du joueur, DR à la direction du déplacement souhaité, HC, VC et DC assureront les mêmes fonctions pour le pingouin en colère, TP sera utilisé pour le décompte du temps de jeu disponible, FIN, SC et SND permettront respectivement de contrôler la fin de la partie, le score et certaines illustrations sonores. En ce qui concerne le son, diverses enveloppes seront fixées des lignes 180 à 210. Viennent ensuite de nombreuses lignes de données mémorisées à l'aide de l'instruction DATA (lignes 250 à 570). Ces lignes auront pour but de positionner l'ensemble des blocs de glace sur l'écran en début de partie. Les symboles graphiques nécessaires au jeu seront ensuite redéfinis par les lignes 610 à 670. L'ensemble des données nécessaires étant ainsi mémorisées, le jeu pourra donc commencer. En premier lieu, les données mémorisées plus haut sous forme de DATA permettant de représenter trois situations de départ différentes, un tableau de jeu sera tiré au hasard puis présenté sur l'écran. Ce tirage et son affichage seront assurés par les lignes 710 à 820. Ensuite le programme s'intéressera aux déplacements du joueur. Pour cela la direction souhaitée pour le déplacement sera prise en compte grâce aux instructions INKEY placées des lignes 880 à 910. En fonction des touches enfoncées, le pingouin sera déplacé sur l'écran et, si sa route est barrée par un glaçon, la sous-routine 1390 sera utilisée pour savoir si celui-ci doit être détruit ou poussé. Enfin, le programme contrôlera si la partie est terminée ou non. Les lignes 1100 à 1150 seront utilisées à cet effet. Nous analyserons ici la valeur prise par la variable FIN ; si elle vaut 1, le joueur aura perdu, si elle vaut 2 il aura gagné. Notons que tant que FIN vaudra 0 le jeu rebouclera grâce à la présence de la ligne 1190. Diverses sous-routines sont également utilisées pour le déroulement de ce jeu ; passons donc maintenant à leur écriture. La première d'entre elles, placée des lignes 1280 à 1370, concerne la mise en place des glaçons contenant une pépite en début de jeu. Leur positionnement sera aléatoire et commandé par les variables HD et VD. Cependant, afin d'éviter de détruire l'effet de labyrinthe présenté par le jeu, nous vérifierons, à la ligne 1320, si la position ainsi choisie pour placer une pépite correspond bien à celle d'un glaçon déjà positionné. Cette sous-routine rebouclera trois fois, une fois par pépite, et, chaque fois, la case correspondante du tableau de mémorisation du jeu prendra la valeur 2. Ceci permettra par la suite au programme de distinguer les glaçons “standard" de ceux “de valeur”. La seconde sous-routine, placée des lignes 1410 à 1870, a pour mission de contrôler le déplacement des glaçons. Dans chaque cas, la direction choisie sera prise en compte et, pour chaque déplacement, le programme commencera par contrôler, dans le tableau de mémorisation de la partie, si le déplacement est possible, puis modifiera son contenu en conséquence. Notons enfin que cette sous-routine comporte deux parties. La première s'adresse aux glaçons standard, la seconde aux glaçons contenant une pépite. Une troisième sous-routine assure les déplacements du pingouin en colère. Celle-ci est placée des lignes 1910 à 2100. La direction de son déplacement sera tirée au hasard et pourra être modifiée chaque fois qu'il heurtera ou poussera un glaçon. De même, cette sous-routine fera régulièrement appel à la précédente de manière à ce que le pingouin en colère soit également en mesure de pousser les glaçons. Enfin, la dernière sous-routine a pour mission de contrôler l'alignement, horizontal ou vertical, des glaçons à pépites. Placée des lignes 2140 à 2280, elle effectuera ses contrôles grâce aux informations contenues dans le tableau de mémorisation du jeu. Si les trois glaçons sont effectivement alignés, la valeur 2 sera donnée à FIN. L'utilisation de ce jeu est extrêmement simple. Une fois le programme entièrement frappé, RUN sera demandé. L'écran affichera alors le labyrinthe de début de partie. Les déplacements du pingouin seront obtenus en utilisant les quatre flèches de déplacement du curseur. Pour pousser un glaçon, il faudra appuyer simultanément sur la flèche correspondant à la direction souhaitée et sur la touche centrale marquée COPY. Notons enfin que si un autre glaçon bloque le glaçon à pousser, ce dernier sera détruit sauf s'il contient une pépite. Dans ce dernier cas, la touche COPY restera sans effet. En fin de jeu, une nouvelle partie pourra être demandée en tapant “P”. Henri-Pierre PENEL , Science&Vie n°842 |