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: 146 fois
TYPE: ZIP
SIZE: 5Ko
NOTE: Uploaded by CPCLOV ; Extended DSK/42 Cyls
.HFE: NON

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

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » Space tunnel
» Coding Src's » Graffitis (Amstrad Magazine 14)
» Coding Src's » Scrolling Scenery (Computing With the Amstrad)
» Coding Src's » DIY Fractal Design (Computing with the Amstrad)
» Coding Src's » Borde sicodélico
» Coding Src's » Manipulation des Tastatureingabepuffers (Schneider Magazin)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 332 millisecondes et consultée 1352 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.