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

from random import shuffle

def evaluation (plateau,n,premier,num) :
    chemin = plateau.chemin(num)
    t = plateau.pourri_chemin(chemin)
    for k in t :
        if not plateau.barriere_possible(k):
            suppr(t,k)
            
    if chemin == [] :
        print("il y a eu des erreurs")
        return -10**100
 
    if t == [] or n==0 :

        return len(chemin)
    #elif n == premier :
    #    l = []
    #    for bar in t :
    #        coup = Coup("B",barriere = bar)
    #        plateau.executer_coup(coup)
    #        l.append(evaluation(plateau,n-1,premier,num))
    #        
    #        suppr(plateau.liste_barrieres , bar)
    #
    #
    #        return(max(l))
    else :
        l = []
        n2 = plateau.longueur_chemin(num)
        n3 = plateau.longueur_chemin(1-num)
        
        for bar in t :
            
            coup = Coup("B",barriere = bar)
            plateau.executer_coup(coup)
            n1 = plateau.longueur_chemin(num)
            n4 = plateau.longueur_chemin(1-num)
            l.append(n1-n2-n3+n4)
            suppr(plateau.liste_barrieres , bar)
        k = max(l)
        for i in range (len(l)) :
            if l[i] == k:
                coup = Coup("B",barriere = t[i])
                plateau.executer_coup(coup)
                return(evaluation(plateau,n-1,premier,num))