diff --git a/src/test.c b/src/test.c index d95a8e2..23f9553 100644 --- a/src/test.c +++ b/src/test.c @@ -1,4 +1,5 @@ #include "../includes/jeu.h" +#include Test_Data *nouveau_test_data(int test, int profondeur) { Test_Data *res = malloc(sizeof(Test_Data)); @@ -12,23 +13,56 @@ Test_Data *nouveau_test_data(int test, int profondeur) { void free_test_data(Test_Data *test_data) { free(test_data); } void run_tests(void) { - printf("Test alphabeta...\n"); - Jeu *jeu = nouvelle_partie(); + int repetions = 5; + int max_profondeur = 6; - Test_Data *test = nouveau_test_data(1, 8); + printf("Lancement des tests, on va jusqu'à une profondeur de %d avec une " + "moyenne de %d répétitions.\n", + max_profondeur, repetions); - clock_t ta, td; + clock_t t0; + double delta1, delta2; + for (int i = 1; i < max_profondeur + 1; ++i) { + delta1 = 0; + for (int j = 0; j < repetions; ++j) { + Jeu *jeu = nouvelle_partie(); - td = clock(); + Test_Data *test = nouveau_test_data(1, i); - // Lance le jeu en mode test avec 2 alpha-bêta - deroulement_partie(jeu, ALPHABETA, ALPHABETA, test); + t0 = clock(); - ta = clock(); + // Lance le jeu en mode test avec 2 alpha-bêta + deroulement_partie(jeu, ALPHABETA, ALPHABETA, test); - printf("Alphabêta : %ld\n", ta - td); + delta1 += ((double)(clock() - t0)) / CLOCKS_PER_SEC; - free_jeu(jeu); + free_jeu(jeu); + free_test_data(test); + } + delta1 /= repetions; - free_test_data(test); + printf("Profondeur de %d (moyenne de %d tests) ->\t Alphabêta = %fs\t", + i, repetions, delta1); + + delta2 = 0; + for (int j = 0; j < repetions; ++j) { + Jeu *jeu = nouvelle_partie(); + + Test_Data *test = nouveau_test_data(1, i); + + t0 = clock(); + + // Lance le jeu en mode test avec 2 alpha-bêta + deroulement_partie(jeu, MINIMAX, MINIMAX, test); + + delta2 += ((double)(clock() - t0)) / CLOCKS_PER_SEC; + + free_jeu(jeu); + free_test_data(test); + } + delta2 /= repetions; + + printf("| Minimax = %fs\t | Différence (m - a) = %fs\n", delta2, + delta2 - delta1); + } }