★ AMSTRAD CPC ★ GAMESLIST ★ LA BATAILLE NAVALE (c) SCIENCE ET VIE ★

Science&Vie

Nous vous proposons ce mois-ci de jouer à la bataille navale. Ce jeu est bien connu de tous et ses règles sont des plus simples. Sur une grille comportant dix lignes de dix cases chacune, chaque participant disposera des navires. Dans notre cas chaque flotte se composera de quatre vedettes, occupant une case, de deux cuirassés, disposés horizontalement ou verticalement sur deux cases, et d'un porte-avions placé sur trois cases. Les deux grilles ainsi remplies, le jeu pourra débuter.

Durant la partie chaque joueur indiquera à son tour les coordonnées de la case de la grille adverse qu'il désire atteindre. Le vainqueur sera celui qui aura détruit le premier l'ensemble des bâtiments ennemis. Notons que notre programme ne précisera pas si un navire a été coulé —et ne le demandera pas non plus— il indiquera simplement si la case choisie correspond à un coup dans l'eau ou si un navire a été touché sans toutefois préciser son type. La partie se jouera donc contre l'ordinateur.

Ces quelques points précisés passons donc à l'écriture du programme. Nous commencerons par définir l'ensemble des symboles graphiques utilisés pour le jeu, à savoir : le carré de base de la grille, l'avant, l'arriére et le milieu des bateaux. Les données nécessaires à cette opération sont portées par les lignes 70 à 140. Ensuite, des lignes 180 à 200 nous créerons trois tableaux de mémorisation des coups.

Le premier, J(10, 10), correspondra en permanence à l'état de la grille du joueur. Le second, M(10, 10), contient l'ensemble des informations relatives à la grille de l'ordinateur, quant au dernier, B(10, 10), il lui servira de “papier brouillon” et permettra donc à la machine de savoir si elle a déjà joué sur une case ou non.

Des lignes 250 à 270 les variables du jeu seront initialisées. L'affichage de l'écran de jeu pourra alors être effectué. Celui-ci sera assuré par les lignes 310 à 480. Deux boucles FOR... NEXT imbriquées, réalisées autour de H et V, effectueront la mise en place des deux grilles. Ensuite leurs lignes et colonnes seront numérotées (370 à 420) et, enfin, les bâtiments disponibles seront rappelés en bas de l'écran.

Les navires seront alors disposés sur les grilles. Le joueur commencera ; les lignes 520 à 690 sont chargées de cette opération. Pour chaque position demandée le programme vérifiera si les cases qu'occuperont les navires sont effectivement libres grâce à diverses sous-routines que nous verrons plus loin. Celles-ci seront d'ailleurs de nouveau utilisées pour la mise en place des bâtiments de l'ordina-
teur; opération effectuée des lignes 730 à 860.

Les deux grilles étant ainsi convenablement remplies, la partie pourra débuter. En premier lieu les coordonnées de tir du joueur seront demandées — lignes 900 à 940 — puis l'ordinateur déterminera la case sur laquelle portera son coup — lignes 990 à 1330. Ici de nombreux contrôles seront effectués en fonction des valeurs contenues dans le tableau B(10, 10) et en tenant compte du résultat du coup précédent; à savoir s'il s'agissait d'un coup dans l'eau ou non. Durant ces deux phases, diverses sous-routines seront de nouveau employées; nous le verrons plus loin.

Enfin le programme contrôlera si l'un des participants est vainqueur en examinant le contenu des tableaux J(10, 10) et M(10, 10). Si l'un de ces tableaux est vide cela signifiera que son possesseur a perdu tous ses navires et qu'il a donc perdu tout court. Si tel est le cas la partie sera terminée et le nom du gagnant indiqué sur l'écran. En cas contraire le jeu sera rebouclé.

Passons à présent en revue les diverses sous-routines utilisées.

La première, comprise entre les lignes 1490 et 1630, a pour fonction de traiter les données frappées au clavier par le joueur. Elle sera utilisée aussi bien pour la mise en place des navires que pour indiquer au programme les coordonnées du tir du joueur.

Des lignes 1670 à 1700 nous trouverons une sous-routine destinée à la mise en place des vedettes. Son but est, d'une part, de contrôler si la case demandée est effectivement libre et, d'autre part, de mémoriser, soit dans J(10, 10) si c'est au tour du joueur de placer ses pièces, soit dans M(10, 10) si c'est à celui de l'ordinateur, les coordonnées de chaque bâtiment. De même nous trouverons, tournant autour du même principe, une sous-routine destinée à la mise en place des cuirassés des lignes 1740 à 1850, puis une concernant le porte-avions des lignes 1890 à 2050.

Le contrôle des tirs effectués par le joueur est réalisé par la sous-routine des lignes 2090 à 2200. Pour cela les coordonnées indiquées seront comparées au contenu du tableau M(10, 10). En fonction de ce résultat la réponse sera indiquée sur l'écran et un contrôle sera effectué afin de savoir si l'ordinateur dispose encore de navires.

La sous-routine de contrôle des coups de l'ordinateur est basée sur le même principe, cependant un contrôle suplémentaire sera effectué afin de déterminer si, soit par inadvertance, soit volontairement, le joueur ne tente pas de tricher. Enfin, toujours au sein de cette routine, le programme vérifiera s'il a bien tiré sur l'ensemble des cases adjacentes à une case correspondant à un coup réussi.

La frappe de ce programme ne doit pas poser de problème particulier. Comme toujours nous avons évité l'utilisation du basic abrégé afin de simplifier sa compréhension.

Son utilisation est également très simple. Après l'avoir entièrement tapé et demandé RUN, deux grilles de jeu s'affichent sur l'écran. Celle de gauche sera utilisée par le joueur pour disposer ses bâtiments. Celle de droite fera office de bloc-note ; c'est sur cette dernière que sera présenté le résultat de chaque tir. Un coup dans l'eau sera figuré par une croix, un coup au but par un losange. Une fois ces deux grilles affichées, l'ordinateur demandera de lui fournir la position de chaque vedette. Celle-ci sera tapée au clavier ; dès que les deux coordonnées seront fournies, la vedette sera automatiquement placée sur la grille. Cette opération sera répétée quatre fois : une fois par vedette.

Ensuite, la position des cuirassés sera demandée. Les coordonnées seront fournies comme précédemment mais ici il faudra les faire suivre de “X” si le navire doit être placé horizontalement, ou de “Y" s'il doit être placé verticalement. Le même procédé sera utilisé pour la mise en place du porte-avions.

Si, pour une raison ou une autre, il n'est pas possible de placer l'un des navires sur les coordonnées indiquées, un “bip” sera émis et de nouvelles coordonnées seront demandées.

Notons qu'ici l'ordre dans lequel les coordonnées —verticales, horizontales, X ou Y— sont fournies n'a pas d'importance : le programme les remet automatiquement dans l'ordre. Il en sera de même lors de l'indication des coordonnées de chaque tir. Une fois les tableaux remplis, la partie commencera. Les résultats de vos essais apparaîtront au fur et à mesure sur le tableau de gauche.

Henri-Pierre PENEL , Science&Vie n°841

LA BATAILLE NAVALE
(c) SCIENCE ET VIE

AUTEUR: Henri-Pierre PENEL

★ ANNÉE: 1987
★ LANGAGE:
★ GENRE: BASIC , BATTLESHIP

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» La  Bataille  Navale    (Science  et  Vie)    FRENCHDATE: 2018-07-30
DL: 9 fois
TYPE: ZIP
SIZE: 25Ko
NOTE: Uploaded by CPCLOV ; 42 Cyls
.HFE: OUI

» La  bataille  navale    (Science  et  Vie)    LISTING    FRENCHDATE: 2016-03-11
DL: 48 fois
TYPE: PDF
SIZE: 1290Ko
NOTE: 2 pages/PDFlib v1.6

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)

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 845 millisecondes et consultée 656 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.