★ CODING ★ AVENTURES AVANT TOUT (III) ★ |
Aventures avant tout III (ACPC n°15) |
Avant tout un très gros pardon pour l'infâme coquille qui a osé se glisser dans le numéro précédent. Jusqu'à présent je pensais que le Melini était une exclusivité du Melini Comix Band, et bien non, à la maquette, ils connaissent aussi (Melini aussi, sur un air bien connu).Pour tout réparer, prenez votre Cent Pour Cent du mois d'avril, on peut y lire, lors du test NSEO(CASE), pour l'ouverture à l'ouest “Si NSEO (CASE)<>0”, qu'il faudra comprendre “Si NSEO(CASE) AND 8 <>0”. Dieu seul sait où est passé le “AND 8”. Pour le reste, les paragraphes se sont mélangés les pieds et, manifestement, les maquettistes ont voulu faire de l'article un jeu de Taquin. En lisant les lignes dans le désordre, vous pourrez peut-être comprendre ce que j'essayasse de vous dire. Je me souviens, lors de ma période prénatalo-informaticienne, quand je n'étais encore qu'un minuscule fœtus au sein de mon VG-5000 où tous les rêves m'étaient permis, même ceux d'affronter le monde merveilleux des CPC. Dans ce temps-là, je me posais beaucoup de questions du type “et comment ça marche un ordinateur qui comprend ce que je dis ? Heu, dis-le-moi, allez...” Eh ben il n'y avait pas, à l'époque, de gentils Poum ou Sined pour apporter une réponse claire à mes questions qui ne l'étaient pas pour moi. Une dépêche de dernière minute m'apprend que l'on peut trouver des trucs et bidouilles assez sympa dans un petit fanzine nommé Syntax Error. Procurez-vous-le, no di dieu c'est gratos. Pendant que j'y suis, encore une toute petite parenthèse, devinez qui, en ce moment même, est à côté de moi en train de faire 247 “CLS” par minute ? Vous ne voyez pas ? C'est notre très cher Robby, libéré pour quelques jours par l'armée et c'est tant mieux. AUJOURD'HUI SPEEDONS Speedon car une doubl pag sera peut-êtr (j'économise des lettres) un peu just (lire djeust). Nous attaquons ce mois-ci notre premier vrai et grand listing (l'analyseur de syntaxe, bien sûr), écrit sous Basic pour avoir des explications plus claires. Evidemment, on perd en vitesse d'exécution, mais, voyant ce que font certains professionnels en Assembleur (dans des jeux d'aventures que je ne citerai pas), il me semble qu'il serait bien d'expliquer ce type de routines. C'EST PARTI MON KIKI Vous voyez ce petit listing de quelques lignes Basic ? C'est un analyseur de syntaxe. Il fait la saisie de votre phrase sur l'écran (sans INPUT) ; on supprime donc toutes les touches inutiles du type chiffres et ponctuations. “Stop, me crie Sined, tu vas trop vite, commence par le début...” OK ! Un analyseur de syntaxe est une routine (bout de programme) qui va prendre une phrase entrée au clavier et chercher dans cette même phrase quel est le verbe, l'objet et éventuellement un complément. Pour ce qui nous concerne, nous nous contenterons du verbe et de l'objet. Jetez un œil sur les lignes 130 à 140, ce sont les verbes ; de 180 à 190, ce sont les objets. Commençons par les verbes. Plusieurs verbes sont stockés sur les lignes DATA, séparés par des virgules, jusqu'ici c'est clair. De temps en temps, on voit un petit (qu'est-ce que c'est, dis ? dit Sined), qui représente la séparation entre les synonymes. Les trois premiers verbes sont PRENDRE, VOLER et DEROBER (ils sont en majuscules et écrits de façon incomplète, mais c'est fait exprès). Ensuite, il y a la petite étoile suivie de trois autres verbes qui représentent l'action de donner, une autre étoile et deux verbes qui signifient fouiller, etc. Tout à la fin, on met deux étoiles qui veulent dire que c'est la fin de la liste des verbes. Compris ? DECORTIQUONS LE LISTING En ligne 210, on initial ise la variable VERBE et OBJET qui prendront, à la sortie du sous-programme de l'analyseur, une valeur qui correspondra au numéro du synonyme. Dans notre exemple, si le verbe entré au clavier est PRENDRE, VOLER ou DEROBER, à la sortie, VERBE sera égal à 1, idem pour OBJET. Sur la ligne 230, le X est la colonne sur laquelle sera positionné le curseur de saisie et le 'Y' est le numéro de la rangée. Donc tous deux modifiables, pour les valeurs X=1 et Y=1 le curseur débutera la phrase en haut à gauche de l'écran, 'LMAX' est la longueur maximale autorisée pour la phrase, en l'occurrence 38 dans notre exemple. Enfin, 'PH$' est la variable qui contiendra la phrase entrée par le joueur au clavier. En 240, on efface l'ancienne phrase qui était sur l'écran et qui ne sert plus à grand-chose, en affichant une série d'espaces. A la ligne 280, 'A$' prendra la valeur Ascii de toutes les touches appuyées sur le clavier et par un petit UPPER$' les transformera si possible en majuscules. Le 'XOR' appliqué à la variable 'CUR' m'amuse beaucoup car il évite un test du genre 'CUR=CUR+ 1:IF CUR=2 then CUR=0'. Ensuite, on affiche une fois sur deux un espace à l'emplacement du curseur et, la fois suivante, on affiche le caractère Ascii de (32+13) le 45 dans ce cas (en modifiant le 13, vous pourrez afficher n'importe quel caractère, même un que vous aurez redéfini par la commande 'SYMBOL'). En ligne 300, on branche le programme sur la ligne 480 pour le traitement du retour chariot, en ligne 420 pour la touche Del, en 360 pour l'espace. Puis on teste de nouveau le clavier si la touche enfoncée n'est pas une lettre. ALORS CA SUIT ? Si, arrivé en 360, on n'a plus de place sur la ligne de saisie (LONG= LMAX), on recommence le tout en attendant le retour chariot ou la touche Del qui effacera le dernier caractère saisi au clavier. On affiche en ligne 370 la lettre ainsi testée, suivie d'un petit son pour faire bien, la lettre s'ajoute en 390 à la phrase et la longueur totale de la phrase est incrémentée, puis on reboucle tout le bloc de saisie. EFFACE-MOI CETTE INFAMIE Tiens j'ai déjà vu ça quelque part. Le bloc des lignes 420 à 460 efface la dernière lettre de la phrase à condition que la longueur soit différente de zéro. C'est normal, je ne vois pas comment on pourrait effacer une lettre qui n'existe pas et je vous assure que si on ne prévient pas le CPC de la présence d'une phrase vide, il essaiera malgré tout d'effacer quelque chose. Mon dieu, plus ça va et plus la place réservée pour nous ce mois-ci diminue, je vais essayer de faire très vite. Barbarian II est un jeu assez remarquable dans les mains d'un expert comme Matt Murdock, Septh se défend pas trop mal non plus et j'attends avec impatience de voir le Barbare de service à l'action (où suis-je, qui suis-je, m'égare-je ? oui-je tu t'égare-je bien la France). En deux mots, de 530 à 580, on recherche dans les DATA enfermant dans leur royaume sacré nos très chers verbes. En les lisant, on compte le nombre d'étoiles qui, en sortie, sera le numéro du synonyme. Si le mot est trouvé, on arrête de chercher bêtement et on enchaîne sur les objets qui reprennent le même principe, à la différence près que le 'RESTORE' pointe sur les DATA contenant les objets au lieu de ceux contenant les verbes, et en sortie, ce n'est pas la variable VERBE' qui sera égale à 'TROUV' mais la variable 'OBJET. Tiens, à propos, de 700 à 750 on fait kôa ? C'est évident voyons, on dit que 'TROUV=0' (en français, je n'ai rien trouvé), puis si le mot lu dans la phrase a une longueur égale à zéro, on laisse tomber, sinon on lit les DATA. On teste la fin du bloc de mots avec les '**' et les blocs par '*'. TROP SIMPLE MAIS TROP NEGLIGE La dernière ligne, qui est la ligne 750, est vraiment trop bête, mais elle rend un sacré service au joueur. Elle teste si le mot lu dans les DATA est identique, non pas à celui écrit sur l'écran, mais à sa partie de gauche de même longueur, ce qui permet d'oublier les 'S' et de se tromper dans les terminaisons. En deux mots, faire quelques fautes d'orthographe, c'est cool, non ? Et dire qu'il y a des programmeurs qui n'en tiennent pas compte (honte à eux). , Une bonne nouvelle, notre Pierre adoré vient de m'autoriser un débordement d'une page pour ce mois-ci, ce qui m'arrange bien et je remercie par la même occasion notre trop belle Miss X qui par son charme n'est pas étrangère à cette décision (je l'ai dit). ' LE PLUS GROS EST PASSE Mais non pas Lip, je veux dire que désormais avec ce que nous avons vu ensemble, vous pouvez très sérieusement (du moins je l'espère) commencer à écrire votre jeu d'aventures. Vous avez un plan, ainsi que toutes les directions dans lesquelles le joueur peut se déplacer ; vous savez également qu'il y a certains endroits momentanément bloqués, qui, par une action quelconque, pourraient s'ouvrir pour permettre une avancée inaccessible au préalable. On peut également bloquer le joueur s'il commet l'erreur qu'il ne devait pas commettre. Tous les déplacements sont dictés à partir du clavier, ceci avec l'aide de l'analyseur de syntaxe (dans lequel figureront, bien sûr, les quatre directions cardinales nord, sud, est et sans oublier l'ouest). L'analyseur, pour les très rares personnes qui ne l'ont pas remarqué, s'appelle par un 'GOSUB 230', dans le cas de notre listing bien sûr. S'il est ; 'RENOMEr', dieu sait en quelle ligne sera métamorphosée la ligne 230. Au retour, nous aurons deux variables "VERBE' et 'OBJET' qui seront égales à des valeurs allant de zéro à... Si la variable 'VERBE' est égale à zéro, c'est que le verbe entré au clavier ne fait pas partie des verbes prévus par le programmeur (c'est vous), de même pour les objets. A GO, A GOGO , ALGO L'algorithme de l'ensemble du jeu pourrait avoir, si vous n'y voyez pas trop d'inconvénient, l'allure qui suit :
Allez les potosses (c'est du Sined), il me vient l'envie de PC et CPC, or donc (c'est du Septh), j'y cours car y'en peux puuuuu. Aaaah. Pour conclure comme à l'accoutumée, Amousse me chuchote une maxime, la voici car elle est très courte : “Aime ta mère car c'est la seule femme qui t'aimera...!” Là, moi, pas trop comprendre, car ceci dépasse peut-être un peu mon savoir philo-machino-psychologique, enfin pour le club Orion, Oh ! Rions un peu...
|