Serpent Madness
===============
(c) Stephane Cloirec
Publie dans CPC numero 9 * Mars 1986
Je suis sur que vous avez toujours rêve de vous mettre
dans la peau d'un serveur ! Réjouissez-vous, car
aujourd'hui, ca y est ! Votre marraine vous a enfin
transforme en un gentil petit serpent. Mais vous allez
découvrir que la vie quotidienne d'un cobra n'est pas
toujours rose.
Votre but est de grandir le plus possible pour accéder
au monde des "grands". Mais le chemin est semé d'embuches
et devient de plus en plus difficile, au fur et a mesure
que vous progressez. Il vous faut donc manger les vivres
qui jonchent la plaine, tout en évitant les nombreux
obstacles et les falaises qui bordent votre territoire.
Et même si vous avez une faim énorme, il vous est interdit
de vous manger vous-même (pas de cannibalisme voyons) !
Pour jouer, vous pouvez utiliser, au choix, le joystick ou
le clavier. Vous avez la possibilité de redéfinir vos propres
touches pour jouer dans le clavier principal de l'AMSTRAD
(la touche ENTER, le pave de curseur et le pave numérique ne
sont pas autorises). Pour plus de détails, voyez les instruc-
tions dans le jeu et essayez les différentes options.
Avant le chargement du programme, n'oubliez pas de "resetter"
l'ordinateur.
STRUCTURE DU PROGRAMME
----------------------
Le programme est réalisé en Basic, a l'exception de deux
routines en langage machine, destinées a faciliter et a
accélérer la vitesse du jeu. Il est donc aisément modifiable,
il est très facile, par exemple, de rajouter de nombreux
autres tableaux si vous le désirez.
Lignes 130 a 330
Initialisations diverses (variables, scores, touches par
défaut, etc.).
Lignes 360 a 570
Initialisations propres a chaque partie (tableau de jeu,
vitesse, coordonnées au départ, adresses-mémoires, etc.).
Lignes 610 a 860
Routine principale du jeu (test clavier, test collisions,
routine de déplacement du serpent).
Lignes 900 a 1090
Saut a cette routine si le serpent a mange quelque chose
(allongement du corps, score, etc.).
Lignes 1130 a 1180
Routine en LM destinées a "vider" la partie de la mémoire
ou sont stockées des valeurs utilisées par le programme.
Lignes 1220 a 1600
Initialisation des symboles graphiques.
Lignes 1640 a 2090
Mise en place du tableau de jeu (une partie de cette
routine est utilisée en cours de jeu pour rajouter
aliments et monstres dans le tableau).
Lignes 2130 a 2250
Fin du jeu (remise a zéro des variables, "GAME OVER",
test de HI-SCORE).
Lignes 2290 a 2360
Deuxième routine en LM. Elle est utilisée pour les tests
de collision. On stocke les coordonnes (X,Y) de l'endroit
a tester en (&9EEFE,&9EFF), le CALL &9E00 donne en &9EFD
la valeur ASCII du caractère teste.
Lignes 2400 a 2520
Menu d'accueil du jeu (aiguille sur les différentes
options).
Lignes 2560 a 2730
Changement clavier/joystick et inversement.
Lignes 2770 a 3030
Redéfinition du clavier (la routine utilise une table de
conversion entre les valeurs ASCII et les valeurs en
INKEY pour le positionnement des touches sur le clavier
AMSTRAD).
Lignes 2990 a 3030
Entree et vérification des touches (ne fonctionne pas
pour ENTER et le pave de curseur).
Lignes 3070 a 3370
Instructions du jeu.
Lignes 3420 a 3440
Abandon.
Lignes 34609 a 3780
Les 4 tableaux de jeu différents.
LES PRINCIPALES VARIABLES
-------------------------
Utilisées par le programme, ainsi que les adresses-mémoires
sont :
OPT$
Option (clavier/joystick)
KH,KB,KD,KG
Contiennent les valeurs des dernières touches redéfinies
HT BS, DT, GH
Contiennent les valeurs en entree (valeurs du joystick ;
ou KH, KB, KD et KG pour le clavier).
VIT
Vitesse du jeu (valeur de la pause en 850).
TABLEAU
Numéro du tableau dans lequel on joue.
TTAB
Nombre de tableaux déjà passes.
NMONS
Nombre de "monstres" présents dans le tableau.
EATMONS
Nombre de "monstres" manges par le serpent.
HISCORE, SCORE
Comme leur nom indique... (équivalents alphanumériques
SC$, HISC$).
X,Y, TETX, TETY, FINX, FINY, QUEUX, QUEUY
Coordonnées des différents points du serpent intervenant
dans la routine de déplacement.
PT, PG, DIR
Pointeurs de direction (signalent les changements de
direction; PT sert aussi a l'affichage des différents
têtes et corps, PQ servant a la queue).
ADX, ADY, ADD
Pointeurs-mémoires servant a "poker" les coordonnées et
le sens des changements de direction.
AQX, AQY, AQD
Pointeurs-mémoires vérifiant si la queue doit effectuer
un changement de direction.
&9CFF
Vérifie si le SYMBOL AFTER a été exécuté ou non.
&9CFD
Vérifie si le joueur a fait le tour des 4 tableaux, pour
maintenir la vitesse au maximum.
&9EFE
Coordonnée X de l'emplacement a tester.
&9EFF
Coordonnée Y.
&9EFD
Contient le résultat du test (valeur ASCII).
&9E00
Adresse de l'implantation de la routine de test.
&9D00
Adresse d'implantation de la routine d'effacement de
la mémoire.
Si vous trouvez le jeu trop difficile, ou au contraire trop
facile, il n'y a que peu de choses a modifier pour l'adapter
a votre convenance :
- On peut diminuer (ou augmenter) le nombre de "monstres" a
manger. Lignes 990 et 1070 (utilisez toujours un multiple de
4).
- En augmentant la valeur de VIT (ligne 450), on diminue la
vitesse du jeu (pour la mettre au maximum, cette vitesse,
vous pouvez toujours supprimer la boucle d'attente ligne 850).
- Pour faire apparaitre moins (ou plus) d'obstacles a la fois,
il suffit de modifier la valeur de la bande ligne 1800 (atten-
tion a la compatibilité avec vos variables NMONS et EATMONS -
on n'a plus alors la contrainte d'un multiple de 4, mais d'un
multiple de la valeur que vous avez introduite dans la
boucle !).
- Enfin, le jeu au joystick est plus difficile que le jeu
au clavier : avis aux amateurs...
Et comme disent les Anglais : "Type it and have fun!".