Outils pour utilisateurs

Outils du site


nsi:tds:jeux:bataille_navale

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nsi:tds:jeux:bataille_navale [2024/12/29 17:49] – [La grille de jeu] goupillwikinsi:tds:jeux:bataille_navale [2024/12/29 17:56] (Version actuelle) – [Mémoire des coups tirés] goupillwiki
Ligne 80: Ligne 80:
 ==== Lire, écrire ==== ==== Lire, écrire ====
  
-On veut une fonction ''lire(grille:list, line:int, col:int) -> int'' qui pour une grille de jeu et une position donnée par sa ligne et sa colonne, renvoie le contenu de la case.+On veut une fonction ''%%lire(grille:list, line:int, col:int) -> int%%'' qui pour une grille de jeu et une position donnée par sa ligne et sa colonne, renvoie le contenu de la case.
  
 Avec la grille précédente, il faut que ''%%lire(grille, 1, 3)%%'' renvoie ''2''. Avec la grille précédente, il faut que ''%%lire(grille, 1, 3)%%'' renvoie ''2''.
Ligne 103: Ligne 103:
 ==== Coulé ==== ==== Coulé ====
  
-On a besoin d'une fonction ''coulé(grille:list, navire:int) -> bool''+On a besoin d'une fonction ''%%coulé(grille:list, navire:int) -> bool%%''
   * ''grille'' est la grille de jeu   * ''grille'' est la grille de jeu
   * ''navire'' est le numéro de navire, par exemple ''1'' pour le porte-avions   * ''navire'' est le numéro de navire, par exemple ''1'' pour le porte-avions
Ligne 112: Ligne 112:
 Quand on tire sur une flotte, on veut savoir si on a touché et éventuellement si on a coulé. Quand on tire sur une flotte, on veut savoir si on a touché et éventuellement si on a coulé.
  
-Il faut donc une fonction ''tir(flotte:list, adresse:str) -> (bool,bool)'',+Il faut donc une fonction ''%%tir(flotte:list, line:int, col:int) -> (bool,bool)%%'',
   * on précise en entrée la flotte de l'adversaire et la case ciblée,   * on précise en entrée la flotte de l'adversaire et la case ciblée,
   * la fonction doit renvoyer deux booléens. Le premier indique si un navire est touché et le second indique si un navire est coulé. Par exemple, le retour ''True, False'' indique que c'est « touché » mais pas « coulé ».   * la fonction doit renvoyer deux booléens. Le premier indique si un navire est touché et le second indique si un navire est coulé. Par exemple, le retour ''True, False'' indique que c'est « touché » mais pas « coulé ».
Ligne 120: Ligne 120:
  
 <code python> <code python>
-touché, coulé = tir(grille, "B6")+touché, coulé = tir(grille, 1, 7)
 # touché est True # touché est True
 # coulé est False # coulé est False
Ligne 138: Ligne 138:
 ==== vide ==== ==== vide ====
  
-On veut une fonction ''vide(grille:list) -> bool'' qui renvoie ''True'' quand la grille est vide.+On veut une fonction ''%%vide(grille:list) -> bool%%'' qui renvoie ''True'' quand la grille est vide.
  
 ==== grille aléatoire ==== ==== grille aléatoire ====
Ligne 151: Ligne 151:
  
 Il est plus confortable pour le joueur de garder la trace des tentatives qu'il a effectuées. On pourrait alors entretenir une grille de même format que la précédente mais qui contiendrait : Il est plus confortable pour le joueur de garder la trace des tentatives qu'il a effectuées. On pourrait alors entretenir une grille de même format que la précédente mais qui contiendrait :
-  * '0' pour une case dans laquelle on n'a pas encore tiré, +  * ''0'' pour une case dans laquelle on n'a pas encore tiré, 
-  * '1' pour un tir qui a touché, +  * ''1'' pour un tir qui a touché, 
-  * '2' pour un coup à l'eau+  * ''2'' pour un coup à l'eau
  
 Il faudrait donc maintenir cette grille à jour au cours de la partie. De plus, pour qu'elle ait un intérêt, il faudrait prévoir une fonction d'affichage. Un affichage texte en console est tout à fait possible. Voici un exemple : Il faudrait donc maintenir cette grille à jour au cours de la partie. De plus, pour qu'elle ait un intérêt, il faudrait prévoir une fonction d'affichage. Un affichage texte en console est tout à fait possible. Voici un exemple :
Ligne 160: Ligne 160:
 def affichage_cible(cible): def affichage_cible(cible):
     SYMBOLES = " XO"     SYMBOLES = " XO"
-    result =""+    result =" 
 +    for i in range(TAILLE): 
 +        result += f"{i+1:02d}"
     for i, item in enumerate(cible):     for i, item in enumerate(cible):
-        result += SYMBOLES[item] +        if i%TAILLE == 0: 
-        if (i+1)%TAILLE == 0: # fin de ligne +            line = i//TAILLE 
-            result += '\n'+            result += "\n\n" 
 +            result += chr(line + 65) 
 +        result += " " + SYMBOLES[item]
     return result     return result
 </code> </code>
nsi/tds/jeux/bataille_navale.1735490976.txt.gz · Dernière modification : de goupillwiki