IA_MinMax.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from Outils.Arbre import *
  2. from Outils.Moteur_de_jeu import Joueur
  3. from Outils.Moteur_de_jeu.Joueur import *
  4. from random import shuffle
  5. class IA_minmax(Joueur) :
  6. def __init__(self, nom, fct_eval, prof) :
  7. """
  8. la fonction d'évaluation sera donnée en entrée, et évaluera les positions.
  9. prof est la profondeur
  10. """
  11. Joueur.__init__(self,"O",nom)
  12. self.fct_eval = fct_eval
  13. self.prof = prof
  14. def calculer_coup( self, plateau, liste_coup) :
  15. #1. : avoir l'arbre
  16. #2. : calculer le coup
  17. #3 : le ressortir (trouver son indexation dans la liste des coups)
  18. #etape 1
  19. arb = Arbre (self.fct_eval, plateau, self.num, 0, self.prof)
  20. #etape 2
  21. t = arb.fils
  22. l=[]
  23. maxi = t[0][1].valeur
  24. for i in range(len(t)) :
  25. l.append (t[i][1].valeur)
  26. if t[i][1].valeur >= maxi :
  27. maxi = t[i][1].valeur
  28. liste_coups = []
  29. for i in range(len(t)) :
  30. if t[i][1].valeur == maxi :
  31. liste_coups.append(t[i][0])
  32. shuffle(liste_coups)
  33. coup = liste_coups[0]
  34. for i in range(len(liste_coup)) :
  35. if liste_coup[i] == coup :
  36. return i