adding bold text
This commit is contained in:
parent
e2ce777bc3
commit
c0037d0941
1 changed files with 12 additions and 3 deletions
15
minimax.py
15
minimax.py
|
@ -1,4 +1,4 @@
|
||||||
from math import sqrt
|
from math import sqrt # Utile pour avoir dynamiquement le nombre de cases a validé pour gagner une partie
|
||||||
|
|
||||||
class Minimax:
|
class Minimax:
|
||||||
"""Définition de l'algorithme minimax."""
|
"""Définition de l'algorithme minimax."""
|
||||||
|
@ -25,7 +25,7 @@ class Minimax:
|
||||||
"""Renvoie la liste des cellules vides depuis un état."""
|
"""Renvoie la liste des cellules vides depuis un état."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def main(self, n: int, p: list, j: str) -> list: # p state, n depth, j player
|
def algorithme(self, n: int, p: list, j: str) -> list: # p state, n depth, j player
|
||||||
"""Évaluation de `p` à une profondeur `n` (joueur j)."""
|
"""Évaluation de `p` à une profondeur `n` (joueur j)."""
|
||||||
if self.terminale(p) or n == 0: # si p terminale ou n = 0
|
if self.terminale(p) or n == 0: # si p terminale ou n = 0
|
||||||
f = self.evaluation(p)
|
f = self.evaluation(p)
|
||||||
|
@ -68,6 +68,7 @@ class Morpion(Minimax):
|
||||||
super().__init__(self._recuperationEtatsGagnants(), joueurA, joueurB)
|
super().__init__(self._recuperationEtatsGagnants(), joueurA, joueurB)
|
||||||
self.joueurA = joueurA
|
self.joueurA = joueurA
|
||||||
self.joueurB = joueurB
|
self.joueurB = joueurB
|
||||||
|
self.gagnant = ''
|
||||||
|
|
||||||
def _definitionPlateau(self, x: int, y: int) -> list:
|
def _definitionPlateau(self, x: int, y: int) -> list:
|
||||||
"""
|
"""
|
||||||
|
@ -197,6 +198,8 @@ class Morpion(Minimax):
|
||||||
if fini: # meme chose, on quitte la boucle for (i) si on a fini
|
if fini: # meme chose, on quitte la boucle for (i) si on a fini
|
||||||
break
|
break
|
||||||
|
|
||||||
|
if fini:
|
||||||
|
self.gagnant = joueur
|
||||||
return fini
|
return fini
|
||||||
|
|
||||||
def _coordonneesCaseDepuisNumero(self, numero: int) -> tuple[int, int]:
|
def _coordonneesCaseDepuisNumero(self, numero: int) -> tuple[int, int]:
|
||||||
|
@ -232,14 +235,20 @@ class Morpion(Minimax):
|
||||||
|
|
||||||
return int(reponse)
|
return int(reponse)
|
||||||
|
|
||||||
|
def gras(self, texte: str) -> str:
|
||||||
|
"""Fonction qui renvoie le texte en argument en gras."""
|
||||||
|
return f"\033[1m{texte}\033[0m"
|
||||||
|
|
||||||
def jouer(self) -> None:
|
def jouer(self) -> None:
|
||||||
"""Lance la partie de Morpion."""
|
"""Lance la partie de Morpion."""
|
||||||
while not self._terminer(): # tant que la partie n'est pas terminé
|
while not self._terminer(): # tant que la partie n'est pas terminé
|
||||||
self.afficher() # affichage du plateau
|
self.afficher() # affichage du plateau
|
||||||
reponse = self._demandeCase() # on demande où le joueur veut posé sa pièce
|
reponse = self._demandeCase() # on demande où le joueur veut posé sa pièce
|
||||||
self._placementPiece(self.joueurA, reponse) # on place la pièce du joueur
|
self._placementPiece(self.joueurA, reponse) # on place la pièce du joueur
|
||||||
|
# self._placementPiece(self.joueurB, self.algorithme())
|
||||||
self.afficher() # affichage du plateau final
|
self.afficher() # affichage du plateau final
|
||||||
print("🎉 Partie terminé, un joueur a gagné !")
|
print(f"🎉 Partie terminée, le {self.gras(f'joueur {self.gagnant}')} a gagné !")
|
||||||
|
|
||||||
if __name__ == "__main__": # Si on lance directement le fichier et on s'en sert pas comme module
|
if __name__ == "__main__": # Si on lance directement le fichier et on s'en sert pas comme module
|
||||||
Morpion('X', 'O').jouer() # On lance la partie à l'instanciation du Morpion
|
Morpion('X', 'O').jouer() # On lance la partie à l'instanciation du Morpion
|
||||||
|
# Morpion('X', 'O', (4, 4)).jouer() # Si on veut lancer le morpion avec un plateau 4x4
|
||||||
|
|
Reference in a new issue