nsi:jeu:puissance4
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:jeu:puissance4 [2022/12/08 12:41] – goupillwiki | nsi:jeu:puissance4 [2022/12/09 12:14] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 73: | Ligne 73: | ||
| //Bien que j'ai noté ce tableau sur plusieurs lignes, il s'agit bien d'un tableau à une dimension puisqu' | //Bien que j'ai noté ce tableau sur plusieurs lignes, il s'agit bien d'un tableau à une dimension puisqu' | ||
| + | |||
| + | <code python> | ||
| + | # c'est exactement le même tableau du point de vue de Python : | ||
| + | [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 2, 0, 0, 0, 1, 2, 2, 1, 0, 0, 2, 1, 1, 1, 2, 2, 0] | ||
| + | </ | ||
| === Créer une grille vide === | === Créer une grille vide === | ||
| Ligne 109: | Ligne 114: | ||
| # SYMBOLS[0] correspond à une case vide. | # SYMBOLS[0] correspond à une case vide. | ||
| - | def display(grid: | + | def grid_to_str(grid: |
| """ | """ | ||
| grid: tableau de LIGNES * COLS éléments | grid: tableau de LIGNES * COLS éléments | ||
| - | | + | |
| """ | """ | ||
| # création d'une grille avec les symboles au lieu des numéros | # création d'une grille avec les symboles au lieu des numéros | ||
| Ligne 171: | Ligne 176: | ||
| </ | </ | ||
| - | === Vérifier | + | === Vérifier |
| - | Cette partie est plus difficile. L' | + | Cette partie est plus difficile. L' |
| * On choisit une orientation -- diagonale ↘, diagonale ↗, verticale, horizontale | * On choisit une orientation -- diagonale ↘, diagonale ↗, verticale, horizontale | ||
| * On choisit un point de départ, par exemple le coin supérieur gauche | * On choisit un point de départ, par exemple le coin supérieur gauche | ||
| - | * On parcours la grille depuis ce point de départ | + | * On parcourt cet alignement du point de départ |
| - | * Quand on en rencontre une quantité suffisante pour faire un alignement on répond que la fonction a trouvé un alignement. | + | |
| - | * Si on atteint un bord sans trouver d' | + | |
| - | + | ||
| - | Voici un algorithme possible | + | |
| <code lang-none> | <code lang-none> | ||
| + | FONCTION get_line | ||
| ENTRÉES | ENTRÉES | ||
| grille | grille | ||
| pas: déplacement à faire d'un case à l' | pas: déplacement à faire d'un case à l' | ||
| - | | + | |
| + | SORTIE: une chaîne de caractères line valeurs de l' | ||
| DÉBUT | DÉBUT | ||
| - | soit position en cours définie par la position de départ | + | soit position en cours définie par la position de depart |
| - | soit 0 le contenu en cours | + | soit line une chaine vide |
| - | soit 0 la valeur du compteur | + | |
| TANT QUE position en cours à l' | TANT QUE position en cours à l' | ||
| - | | + | |
| - | | + | |
| - | mettre compteur à 0 et contenu en cours à 0 | + | |
| - | SINON SI j == contenu en cours ALORS | + | |
| - | augmenter le compteur | + | |
| - | | + | |
| - | contenu en cours devient égal à j | + | |
| - | Le compteur passe à 1 | + | |
| - | FIN | + | |
| - | SI compteur >= quantité nécessaire pour gagner ALORS | + | |
| - | RENVOYER VRAI | + | |
| - | FIN | + | |
| - | changer la position | + | |
| FIN | FIN | ||
| - | RENVOYER | + | RENVOYER |
| FIN | FIN | ||
| </ | </ | ||
| - | | ||
| - | Traduisez cet algorithme en fonction. | ||
| - | < | + | //Exemple :// |
| - | def line_has_victory(grid: | + | < |
| - | """ | + | 0000000 |
| - | grid: grille de jeu | + | 0000000 |
| - | step: paire (step_lig, | + | 0010000 |
| - | start: paire (start_lig, start_col) indiquant la position de départ | + | 0022200 |
| - | | + | 0012120 |
| - | """ | + | 1121211 |
| - | # À vous ! | + | |
| </ | </ | ||
| - | | + | Si on se donne '' |
| Exemple d' | Exemple d' | ||
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| + | |||
| + | On ajoute une deuxième fonction pour compter le nombre max de répétitions d'un symbole : | ||
| + | |||
| + | <code python> | ||
| + | def line_has_victory(line: | ||
| + | ''' | ||
| + | line: chaîne représentant un alignement. ex : " | ||
| + | valeur: valeur recherchée. ex : 1 | ||
| + | renvoie True si line contient un alignement assez long | ||
| + | ex: ici non, il n'y a que 3 fois le 1 à la suite | ||
| + | ''' | ||
| + | </ | ||
| Et maintenant vous pouvez envisager une fonction qui parcours toutes les lignes possibles à la recherche d'une victoire. | Et maintenant vous pouvez envisager une fonction qui parcours toutes les lignes possibles à la recherche d'une victoire. | ||
| Ligne 276: | Ligne 278: | ||
| # SYMBOLS[0] correspond à une case vide. | # SYMBOLS[0] correspond à une case vide. | ||
| - | def display(grid: | + | def grid_to_str(grid: |
| """ | """ | ||
| grid: tableau de LIGNES * COLS éléments | grid: tableau de LIGNES * COLS éléments | ||
| - | | + | |
| """ | """ | ||
| # création d'une grille avec les symboles au lieu des numéros | # création d'une grille avec les symboles au lieu des numéros | ||
| Ligne 311: | Ligne 313: | ||
| # À vous ! | # À vous ! | ||
| - | def line_has_victory(grid:list, step:tuple, start: | + | def get_line(grid:list, step:tuple, start: |
| """ | """ | ||
| grid: grille de jeu | grid: grille de jeu | ||
| step: paire (step_lig, | step: paire (step_lig, | ||
| start: paire (start_lig, start_col) indiquant la position de départ | start: paire (start_lig, start_col) indiquant la position de départ | ||
| - | renvoie | + | renvoie |
| """ | """ | ||
| # À vous ! | # À vous ! | ||
| + | |||
| + | def line_has_victory(line: | ||
| + | ''' | ||
| + | line: chaîne représentant un alignement. ex : " | ||
| + | valeur: valeur recherchée. ex : 1 | ||
| + | renvoie True si line contient un alignement assez long | ||
| + | ex: ici non, il n'y a que 3 fois le 1 à la suite | ||
| + | ''' | ||
| def grid_has_victory(grid: | def grid_has_victory(grid: | ||
| Ligne 340: | Ligne 350: | ||
| Ensuite le jeu suit l' | Ensuite le jeu suit l' | ||
| - | <code lang:none linenums> | + | <code lang-none> |
| DÉBUT | DÉBUT | ||
| créer une grille vide | créer une grille vide | ||
| Ligne 356: | Ligne 366: | ||
| partie_finie passe à vrai | partie_finie passe à vrai | ||
| afficher un message indiquant le match nul | afficher un message indiquant le match nul | ||
| + | SINON | ||
| + | changer de joueur | ||
| FIN | FIN | ||
| FIN | FIN | ||
nsi/jeu/puissance4.1670499698.txt.gz · Dernière modification : de goupillwiki
