P R O T E C T O R
La guerre des nerfs
Publie dans MicroStrad numero 5 * Mai/juin 1986
Dans ce jeu, vous aurez a defendre vos cinq bases strategiques contre les
attaques virulentes des envahisseurs. Vous disposez du seul element de
protection qu'est votre fidele "fulgureur quadratique", dont l'inconvenient
est de n'avoir qu'une portee limitee, et surtout de ne pouvoir "fulgurer"
qu'au coup par coup.
Avec votre joystick, vous dirigez sur l'ecran un viseur qui se deplace dans
les huit directions. Bien entendu, le bouton de tir du baton de joie
(autrement dit : du joystick) vous permet de fulgurer quadratiquement a tout
va.
L'ecriture de ce type de programme ou l'action est predominante est quasi
impossible en Basic, a cause de sa lenteur. Aussi, pour qu'il demeure
comprehensible tout en etant assez rapide (pour rendre le jeu interessant),
nous avons integre au Basic trois routines Assembleur sous forme de RSX.
La premiere dessine des carres dont la taille est donnee en parametre
(|BOUM,taille). La seconde dessine la croix du viseur aux coordonnees
specifiees (|VISE,x,y). Enfin, la derniere effectue le test des collisions
entre les envahisseurs, les eclats du fulgureur et les bases, aux coordonnees
choisies (|CHOC,x,y).
Le programme ci-dessous contient la liste source des routines susnommees,
afin que vous compreniez leur fonctionnement si vous avez quelques
connaissances en Assembleur. Si vous ignorez tout de ce langage, ce peut-etre
une occasion de faire connaissance avec lui. Mais ne cherchez pas a taper en
Basic cette liste source sur votre CPC ; il n'y comprendrait rien...
Par contre, si vous avez un assembleur (ici, nous avons utilise Zen), alors
pas de probleme !
Seule la liste ci-contre (a droite) vous sera indispensable pour faire tourner
le programme (description en encadre). Cette liste est structuree en blocs
homogenes, chacun d'eux etant signale par une ligne de REMarque. C'est une
methode a respecter pour rendre les programmes lisibles (vous qui nous envoyez
des programmes, inspirez-vous de cette methode : vos chances d'etre publies
seront multiplies par 10 !).
JEAN-PIERRE LALEVEE & HELENE DINARD
Note de T&J/GPA
---------------
Je n'ai pas tape le source de l'article, trop long !
Le jeu est un poil buggue. Lorsqu'un envahisseur s'ecrase sur le bord droit
d'une ville, il reste coince !
Le programme dans ses grandes lignes
------------------------------------
Lignes 100-130 : appel du sous programme qui place en memoire les codes
machines des trois RSX, et initialisation de ces RSX. Ce sont les lignes 2100
a 2550 qui contiennent les codes en question.
Lignes 220-270 : redefinition des quelques caracteres graphiques (envahisseurs
et autres gadgets).
Lignes 290 a 610 : initialisation et descriptions de la plupart des variables
et constantes utilisees par le programme en fonctionnement. Vous pouvez
evidemment eliminer les ' (apostrophes de REMarques) et les remarques
elles-memes qui terminent la plupart de ces lignes.
Lignes 650-1480 : voici la boucle principale du programme.
Lignes 710-730 : la position des bases en coordonnees graphiques est placee
en tableau.
Lignes 770-840 : on calcule la position de depart des premiers envahisseurs.
Lignes 880-990 : on dessine les cinq bases a defendre, en bas de l'ecran.
Lignes 1030-1060 : on dessine le viseur mobile.
Lignes 1100-1320 : c'est ici la zone fondamentale du jeu. On y gere la
manette de jeu, on deplace les envahisseurs, on gere les collisions avec les
eclats du fulgureur et les bases.
Lignes 1170 : a partir du moment ou le score depasse 12 (c'est-a-dire 12
envahisseurs detruits), les envahisseurs qui se trouvent les plus bas
deviennent plus agressifs, et emettent des rayons destructeurs... Vous pouvez
jouer sur ces valeurs (12 et 0.1) pour rendre le jeu encore plus difficile,
ou plus facile...
Lignes 1540-1610 : ce sous-programme est execute a chaque envahisseur detruit;
il met a jour le score.
Lignes 1640-1700 : le fulgureur quadratique loge dans ces lignes. Ce
sous-programme dessine des carres emboites de plus en plus grands, puis les
fait disparaitre quand la valeur maximale est atteinte.
Lignes 1740-1770 : voir ligne 1170. C'est ici que les envahisseurs emettent
leurs rayons pour detruire vos bases a distance.
Lignes 1810-1940 : chaque batiment touche par un envahisseur est detruit ;
il n'en reste qu'un tas de cendres rougeoyantes... La partie s'arrete
lorsqu'il ne reste plus qu'une seule base intacte.
Lignes 1980-2060 : quand un envahisseur a disparu, un autre apparait en haut
de l'ecran, a une position aleatoire. Son objectif est determine, et sa
vitesse est calculee ici.