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/11 20:04] – [Mémoire des coups tirés] goupillwikinsi:tds:jeux:bataille_navale [2024/12/29 17:56] (Version actuelle) – [Mémoire des coups tirés] goupillwiki
Ligne 28: Ligne 28:
  
 <code python> <code python>
-def adresse_to_index(adresse:str) -> int:+def adresse_to_coords(adresse:str) -> int,int:
     """     """
     adresse: chaine comme "F5"     adresse: chaine comme "F5"
-    renvoie le numéro de la case. Pour "F5" le numéro est 54+    renvoie la ligne et la colonne. 
 +    Pour "F5", renvoie 5, 4
     """     """
 </code> </code>
Ligne 79: Ligne 80:
 ==== Lire, écrire ==== ==== Lire, écrire ====
  
-On veut une fonction ''lire(grille:list, adresse:str) -> int'' qui pour une grille de jeu et une adresse -- par exemple ''%%"B4"%%'' -- 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, "B4")%%'' renvoie ''2''.+Avec la grille précédente, il faut que ''%%lire(grille, 1, 3)%%'' renvoie ''2''.
  
-On veut une fonction ''ecrire(grille:list, adresse:str, valeur:int)'' permettant d'écrire la valeur indiquée à la position demandée dans la grille.+On veut une fonction ''ecrire(grille:list, line:int, col:int, valeur:int)'' permettant d'écrire la valeur indiquée à la position demandée dans la grille.
  
-Par exemple, si avec la grille précédente, on exécute ''%%ecrire(grille, "B5", 0)%%'', la grille devient :+Par exemple, si avec la grille précédente, on exécute ''%%ecrire(grille, 1, 3, 0)%%'', la grille devient :
  
 <code python> <code python>
Ligne 102: 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 111: 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 119: 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 137: 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 150: 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 159: 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.1733943848.txt.gz · Dernière modification : de goupillwiki