CODINGLISTINGS ★ JOUEZ AVEC LES ALLUMETTES ★

Jouez avec les allumettesCoding Listings

Bien souvent les allumettes sont les pièces maîtresses de nombreux jeux de société. Nous vous proposerons donc, ce mois-ci, d'adapter à l'Amstrad le jeu de Marienbad, au principe extrêmement simple.

Pour y jouer il suffit de placer sur une table quatre rangées d'allumettes ; sur la première une seule allumette sera présente, sur la seconde trois, sur la troisième cinq et sept sur la dernière. Ceci fait, chaque joueur prendra, à son tour, le nombre d'allumettes qu'il souhaitera, à condition toutefois qu'elles appartiennent à une même rangée. Rien n'interdit donc au joueur qui entame la partie de saisir d'emblée les sept allumettes de la quatrième rangée. Sera vaincu, le joueur qui devra se saisir de la dernière allumette.

Notre programme aura l'habileté d'un joueur moyen ; il sera donc relativement facile, avec un peu d'expérience, de le vaincre. Cependant, en l'améliorant légèrement, il est possible de le rendre invincible. Proposer d'emblée un programme complexe nous a paru trop démoralisant pour une simple prise de contact. A vous donc d'envisager les solutions possibles d'un tel jeu et, n'en doutons pas, de modifier le programme en conséquence.

Pour vous mettre sur la voie signalons que, sur trois rangées, les cas suivants sont gagnants : 14-5, 2-4-6, 3-4-7 et bien entendu, 1-1-1.

D'autres possibilités existent, telles que deux rangées comportant le même nombre d'allumettes (à l'exclusion, évidemment, de 1 et 1)... mais nous vous laisserons la joie de les découvrir.

Ces quelques points fixés passons à l'étude de notre programme.

En premier lieu nous mettrons l'Amstrad en MODE 1; ligne 10. Les données nécessaires à la représentation des allumettes seront alors fournies à la machine puis mémorisées; lignes 20 à 80. Le tableau de jeu pourra alors être affiché. Les lignes 120 à 310 se chargeront de cette opération ainsi 

que de l'affichage de divers commentaires. Le programme cherchera alors à savoir si vous désirez jouer en premier ou non, lignes 320 à 430, et, simultanément, mémorisera la quantité d'allumettes contenues par chaque rangée dans un tableau (lignes 350 et 360).

En fonction de la réponse à la question : “Voulez-vous commencer ?”, le programme se rendra soit en ligne 470, routine chargée de contrôler et gérer le choix du joueur, soit en ligne 720, routine ayant pour fonction de déterminer le coup joué par l'ordinateur. Une sous-routine, utilisée après chaque coup, aura pour fonction d'effacer les allumettes présentes sur l'écan au fur et à mesure qu'elles seront retirées. Cette dernière sera logée de la ligne 1130 à la ligne 1200. Voyons donc rapidement le principe de fonctionnement de chacune de ces fonctions.

La routine du joueur. Comme nous l'avons dit plus haut elle est placée des lignes 470 à 680. En premier lieu le programme demandera sur quelle ligne doivent être retirées les allumettes (ligne 480) puis contrôlera si le chiffre indiqué correspond bien à un numéro de ligne (ligne 490). Ensuite le nombre d'allumettes à retirer sera demandé puis vérifié à son tour (ligne 500, 510 et 520).

Si l'ensemble des propositions fournies est possible, les allumettes seront retirées du tableau de mémorisation du jeu (ligne 530) et la sous-routine 1130 sera utilisée pour effacer les allumettes concernées de l'écran.

Enfin les lignes 580 à 680 vérifieront si l'écran présente encore deux allumettes au moins et seront donc en mesure d'indiquer au programme que le joueur est vainqueur ou non. En fonction du résultat de ce test le programme soit passera au coup à jouer par la machine, soit proposera de jouer une nouvelle partie.

La routine de la machine. Placée des lignes 720 à 1090, cette partie de programme commencera par effacer de l'écran les commentaires destinés au joueur (lignes 720, 780 et 790) puis comptera le nombre total d'allumettes présentes sur l'écran ainsi que le nombre de rangées vides. Cette opération est effectuée dans les lignes 730 à 770 ; A est la variable chargée de compter les allumettes et B celle destinée à la comptabilisation des rangées vides.

Ensuite deux séries de tests sont entreprises. La première, placée des lignes 800 à 870, analysera l'ensemble des cas les plus intéressants. Si aucune solution n'est trouvée, la seconde série de tests sera alors sollicitée. Comprise entre les lignes 880 et 940, elle se contentera de laisser une allumette sur la première rangée en comportant au moins deux, si le nombre total d'allumettes présentes sur l'écran est supérieur à 4, et videra totalement une rangée en cas contraire.

La sous-routine 1130 sera de nouveau utilisée pour effacer les allumettes de l'écran, puis un contrôle de fin de partie sera pratiqué. Ce dernier est identique à celui utilisé dans la routine utilisée par le joueur.

La sous-routine d'effacement des allumettes. Celle-ci est réalisée autour de deux boucles FOR... NEXT imbriquées. La présentation, a priori un peu lourde, de la ligne 1130 est due au fait que, sur l'écran, les allumettes ne sont pas représentées côte à côte mais séparées par un espace. Quoi qu'il en soit le principe de fonctionnement de cette sous-routine reste simple. La position de la dernière allumette à effacer est déterminée par la valeur indiquée dans le tableau de mémorisation du jeu ; seront alors systématiquement effacés tous les emplacements correspondant à l'emplacement possible d'une allumette entre le bord gauche de l'écran et la position indiquée par le tableau de jeu.

Les allumettes étant, en fait, constituées de quatre symboles plus un espace, ceci explique l'utilisation d'une boucle. En effet, à chaque fois un seul caractère étant effacé, il faudra répéter l'opération cinq fois pour libérer totalement la ) zone correspondant à une allumette. 

Ce programme ne doit pas poser de problème de frappe. Comme toujours nous avons évité d'utiliser le Basic abrégé de manière à simplifier son adaptation sur d'autres machines. Rappelons que l'instruction LOCATE —de nombreuses fois utilisée ici— correspond, sur l'Amstrad, au positionnement du curseur. Elle aura donc pour équivalent sur d'autres machines : PRINT AT, CURSER, HTAB-VTAB, etc...

En ce qui concerne la représentation graphique des allumettes il faudra, là encore, utiliser le processus ad hoc de rédéfinition du clavier ; celui-ci est également différent pour chaque appareil.

Une fois ce programme entièrement terminé, RUN frappé, l'ordinateur vous demandera si vous désirez jouer le premier ou non ; la réponse lui sera fournie en appuyant sur 0 pour oui et sur N pour non. Ensuite, au fur et à mesure du déroulement du jeu, le programme vous demandera de lui préciser sur quelle rangée d'allumettes doit porter votre coup et combien vous désirez en prendre.

A chaque fois la réponse sera fournie, puis ENTER sera frappé afin de la valider. Si une erreur de frappe était commise il serait toujours possible de la corriger en utilisant la touche DEL avant de taper ENTER.

La partie terminée, il vous suffira d'appuyer sur une touche quelconque du clavier pour en entamer une nouvelle. Notons que l'ensemble de ces précisions s'inscrivent sur l'écran durant le déroulement du jeu.

Henri-Pierre PENEL , Science&Vie n°828

★ EDITEUR: Science&Vie
★ ANNÉE: 1986
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LICENCE: LISTING
★ AUTEUR: Henri-Pierre PENEL

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Jouez  avec  les  allumettes    (Science  et  Vie)    FRENCHDATE: 2018-07-30
DL: 15 fois
TYPE: ZIP
SIZE: 21Ko
NOTE: Uploaded by CPCLOV ; 42 Cyls
.HFE: OUI

» Jouez  avec  les  allumettes    (Science  et  Vie)    LISTING    FRENCHDATE: 2016-01-10
DL: 57 fois
TYPE: PDF
SIZE: 1799Ko
NOTE: 2 pages/PDFlib v1.6

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » Game - Shoot (Amstrad Computer User)
» Coding Src's » Graphic - Smoothly Scrolling
» Coding Src's » Rom Kopie Ins Ram (CPC Amstrad International)
» Coding Src's » Game - Odd One Out (Amstrad Computer User)
» Coding Src's » Graphic - Puddle (Computing With the Amstrad)
» Coding Src's » Pi - Petr Potuznik (CPC Amstrad International)

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 873 millisecondes et consultée 681 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.