nsi:jeu:morpion
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| nsi:jeu:morpion [2021/04/24 12:42] – créée goupillwiki | nsi:jeu:morpion [2022/04/10 23:58] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 14: | Ligne 14: | ||
| Ci-dessous, une partie gagnante pour **O**. | Ci-dessous, une partie gagnante pour **O**. | ||
| - | {{ :nsi:terminales: | + | {{ :nsi:tds:jeux: |
| ===== Exemple d' | ===== Exemple d' | ||
| + | |||
| + | **Attention :** L' | ||
| ==== Avec classes ==== | ==== Avec classes ==== | ||
| - | <file python | + | <code python > |
| ''' | ''' | ||
| module morpion | module morpion | ||
| Ligne 26: | Ligne 28: | ||
| class Morpion: | class Morpion: | ||
| - | # contantes | + | |
| - | | + | |
| - | | + | |
| N = 3 # taille de la grille | N = 3 # taille de la grille | ||
| Ligne 38: | Ligne 40: | ||
| # on peut opter pour une grille donnée en ligne correspondant | # on peut opter pour une grille donnée en ligne correspondant | ||
| # à la grille lue dans l' | # à la grille lue dans l' | ||
| - | self.__grid = [' ' | + | self.__grid = [self.EMPTY |
| - | # joueur en cours : O | + | # joueur en cours : 1 |
| - | self.__current_player | + | # True si le joueur en cours est P1 |
| + | # False si le joeir en cours est P2 | ||
| + | self.__current_player_is_1 | ||
| | | ||
| def get(self, indice_line, | def get(self, indice_line, | ||
| Ligne 48: | Ligne 52: | ||
| assert 0 <= indice_line < self.N | assert 0 <= indice_line < self.N | ||
| assert 0 <= indice_column < self.N | assert 0 <= indice_column < self.N | ||
| - | return self.__grid[indice_line*N + indice_column] | + | return self.__grid[indice_line*self.N + indice_column] |
| | | ||
| - | def set(self, value, indice_line, | + | def current_player_set(self, indice_line, |
| ''' | ''' | ||
| - | écrit | + | écrit |
| ''' | ''' | ||
| - | assert | + | assert self.cell_is_empty(indice_line, |
| - | assert 0 <= indice_column | + | self.__grid[indice_line*self.N + indice_column] = self.get_current_player_symbol() |
| - | self.__grid[indice_line*N + indice_column] = value | + | self.change_player() |
| + | |||
| + | def cell_is_empty(self, | ||
| + | ''' | ||
| + | renvoie True si la case sélectionnée est vide | ||
| + | ''' | ||
| + | return self.get(indice_line, | ||
| + | |||
| + | def get_current_player_symbol(self): | ||
| + | if self.__current_player_is_1: | ||
| + | return self.P_1 | ||
| + | return self.P_2 | ||
| - | def get_player(self): | + | def current_player_is_1(self): |
| ''' | ''' | ||
| - | | + | |
| ''' | ''' | ||
| - | return self.__current_player | + | return self.__current_player_is_1 |
| | | ||
| def change_player(self): | def change_player(self): | ||
| Ligne 68: | Ligne 83: | ||
| change de joueur en cours | change de joueur en cours | ||
| ''' | ''' | ||
| - | | + | self.__current_player_is_1 |
| - | self.__current_player = self.P_X | + | |
| - | else: | + | |
| - | self.__current_player | + | |
| def clone(self): | def clone(self): | ||
| Ligne 83: | Ligne 95: | ||
| return c | return c | ||
| | | ||
| + | def is_full(self): | ||
| + | ''' | ||
| + | renvoie True si la grille est pleine | ||
| + | ''' | ||
| + | return self.EMPTY not in self.__grid | ||
| + | | ||
| + | def game_over(self): | ||
| + | ''' | ||
| + | renvoie True si la partie est terminée (victoire ou nul) | ||
| + | ''' | ||
| + | return self.is_full() or self.winner() != None | ||
| + | |||
| def winner(self): | def winner(self): | ||
| ''' | ''' | ||
| - | renvoie | + | renvoie |
| - | - l' | + | |
| - | - l' | + | |
| - | - '' | + | |
| ''' | ''' | ||
| # je vous laisse le soin d'y réfléchir | # je vous laisse le soin d'y réfléchir | ||
| Ligne 105: | Ligne 126: | ||
| return out | return out | ||
| | | ||
| - | | + | |
| ''' | ''' | ||
| renvoie un tableau contenant les paires (incice ligne, indice colonne) des cases vides | renvoie un tableau contenant les paires (incice ligne, indice colonne) des cases vides | ||
| ''' | ''' | ||
| # je vous laisse le soin d'y réfléchir | # je vous laisse le soin d'y réfléchir | ||
| - | + | </code> | |
| - | </file> | + | |
nsi/jeu/morpion.1619260953.txt.gz · Dernière modification : de goupillwiki
