Le Taquin alphabetique * Claude Le Moullec
----------------------
Publie dans Am-Mag 42 * Janvier 1989
Voici le moment tant attendu de la recreation. Le listing de ce mois est un
petit jeu necessitant rapidite et reflexion. Il presente l'avantage de
reprendre ce que nous venons d'evoquer et d'y meler ce qui faisait l'objet
de notre premier cours : les chaines de caracteres.
I - Le menu carrefour
Concu au depart pour l'option joystick, ce ju propse egalement les touches
fleches ou bien des touches redefinies. Cela est fixe en ligne 180 avec les
variables K1$, K2$, etc.
Lignes 200 a 340 : creation d'un menu utilisant le systeme de l'inversion
video obtenu par un CHR$(24) devant et apres la variable. Les trente-deux
caracteres de controle existants feront l'objet d'une etude ulterieure.
L'appui sur une touche quelconque incremente les quatre options (ligne 280).
La touche ENTER valide l'option choisie et le branchement se fait en 340.
Les variables K1$, K2$, sont alors initialisees avec des codes ASCII suivant
l'option selectionnee.
II - L'affichage du tableau
Le sous-programme "double hauteur", deja rencontre dans le listing du mois
dernier, est ici a nouveau utilise. Les explications vous sont reservees pour
un prochain cours traitant des bancs titres.
Lignes 730 a 800 : trace du carre contenant les lettres.
III - Variables de base
Tout$ : chaine de caracteres contenant la suite logiqe des quinze premieres
lettres de l'alphabet, plus un espace.
Rien$ : chaine de seize espaces. Celle-ci ne restera pas vide tres longtemps
puisqu'elle contiendra, apres chaque deplacement, les lettres affichees a
l'ecran dans l'ordre qui leur aura ete donne.
Cette chaine sera comparee a la chaine TOUT$. Si elles sont identiques, vous
avez gagne !
DIM Lett$ : dans ce tableau seront stockees les seize lettres dans l'ordre de
leur tirage au sort.
Tp : temps imparti. PER et GAN sont des flags (drapeaux) permettant de savoir
si la partie est gagnee ou perdue.
IV Melange
L'ordinateur fait un tirage au sort pour melanger les seize lettres. Elles sont
stockees dans le tableau LETT$. La ligne 1000 verifie si il n'y a pas deux
lettres identiques dans tout le tableau.
V Affichage
Deux boucles imbriques l'une dans l'autre effectuent l'affichage.
Ligne 1090 : verifie si une lettre n'est pas deja a la bonne place. Si c'est le
cas, elle est affichee avec le PEN 3, sinon, c'est le 1.
Ligne 1110 : on garde en memoire la position X, Y de la case vide. C'est a
partir de cette position que commenceront les deplacements.
VI Routine principale
Ligne 1190 : le temps est decremente. S'il tombe a zero, vous avez perdu.
Ligne 1210 a 1250 : un test du clavier ou du joystick est effectue en fonction
des variables definies dans le menu carrefour. On verifie que le deplacement ne
sort pas de l'espace de jeu. Le branchement s'effectue en consequence.
Lignes 1260 a 1310 : le deplacement est possible a gauche.
Lignes 1270 a 1280 : dans le tableau LETT$, inversion de la case vide avec la
lettre deplacee.
Ligne 1290 : reinitialisation de la position X1.
Ligne 1310 : vers test pour voir si la partie n'est pas gagnee.
Lignes 1320 a 1460 : memes operations avec les trois autres directions.
VII Nouvelle position
Le programme pase par cette routine apres chaque deplacement pour verifier ou
en est la partie.
Ligne 1520 : verifie si la letre deplacee n'est pas a la bone place. Si c'est
le cas, le PEN d'affichage est le PEN 3.
Lignes 1530 a 1540 : on affiche la lettre dans sa nouvelle case et on l'efface
dans l'ancienne.
Ligne 1560 : la chaine de caracteres RIEN$ est creee avec le contenu du
tableau LETT$.
Ligne 1570 : comparaison des variables TOUT$ et RIEN$. Elles sont identiques :
gagne. Ce n'est pas le cas : on boucle pour un nouveau tour.
VIII Perdu / Gagne
En fonction des flags PER et GAN, ce sous-programme connait l'etat en fin de
partie. Si vous avez gagne, le programme recommence mais avec un peu moins de
temps. Si vous avez perdu, le logiciel vous accorde gracieusement une nouvelle
partie avec plus de temps.
Et voila, la boucle est bouclee. Ce petit jeu sans pretention ne demande qu'a
etre etoffe de vos trouvailes. Rendez-vous le mois prochain pour parler des
bas, euh, des tableaux Dim.