from Outils.Moteur_de_jeu import Plateau
from Outils.Moteur_de_jeu.Plateau import *

from time import time
from random import shuffle

# Fonction aléa
def faire_alea_plat( n = 10 ) :
    plateau = Plateau(9,9,n)
    for i in range(n) :
        l = plateau.liste_barrieres_possibles()
        shuffle(l)
        plateau.executer_coup(Coup("B", barriere = l[0]))

    return plateau

# Procédure de mesure
nb_tests = 50

ti = 0

t_map = 0
t_star = 0

for k in range(nb_tests):
    p = faire_alea_plat()
    for i in range(9):
        for j in range(9):
            ti = time()
            path_finding_a_star( p, i, j, 0 )
            t_star += time() - ti
            
            ti = time()
            path_finding_mapping( p, i, j, 0 )
            t_map += time() - ti


print("Nombre de tests : ", 9*9*nb_tests)
print()

print("Performances Mapping :")
print("Temps total : ", t_map )
print("Temps par test : ", t_map / ( 9*9*nb_tests ) )
print()

print("Performances Star :")
print("Temps total : ", t_star )
print("Temps par test : ", t_star / ( 9*9*nb_tests ) )
print()

print("Comparaison :")
print("Map est ", t_map / t_star, " fois plus lents.")
print("Temps réduit de ", (t_map - t_star) / t_map * 100, " pourcents.")