from Outils.Arbre import *
from Outils.Moteur_de_jeu import Joueur
from Outils.Moteur_de_jeu.Joueur import *

from random import shuffle

class IA_minmax(Joueur) :
    def __init__(self, nom, fct_eval, prof) :
        """
            la fonction d'évaluation sera donnée en entrée, et évaluera les positions.
            prof est la profondeur
        """
        Joueur.__init__(self,"O",nom)
        self.fct_eval = fct_eval
        self.prof = prof              

       
    def calculer_coup( self, plateau, liste_coup) :
        #1. : avoir l'arbre
        #2. : calculer le coup
        #3 : le ressortir (trouver son indexation dans la liste des coups)

        #etape 1

        arb = Arbre (self.fct_eval, plateau, self.num, 0, self.prof)

        #etape 2

        t = arb.fils
        l=[]
        maxi = t[0][1].valeur
        for i in range(len(t)) :
            l.append (t[i][1].valeur)
            if t[i][1].valeur >= maxi :
                maxi = t[i][1].valeur

        liste_coups = []
        for i in range(len(t)) :
            if t[i][1].valeur == maxi :
                liste_coups.append(t[i][0])

        
        shuffle(liste_coups)
        coup = liste_coups[0]

        for i in range(len(liste_coup)) :
            if liste_coup[i] == coup :
                return i