From f3f8cb9293c7d8b1d613284b7f776b1f9f29ae4a Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 18 Nov 2022 17:09:15 +0100 Subject: [PATCH] add.. something? --- includes/minimax.h | 5 +++++ src/minimax.c | 44 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/includes/minimax.h b/includes/minimax.h index 4615ae0..2f14511 100644 --- a/includes/minimax.h +++ b/includes/minimax.h @@ -1,9 +1,14 @@ #ifndef OTHELLO_MINIMAX_H #define OTHELLO_MINIMAX_H 1 +#include "joueur.h" + typedef struct jeu Jeu; /* Joue le tour d'après l'algorithme Minimax */ void action_joueur_minimax(Jeu *jeu, int couleur); +/* Implémentation de Minimax */ +/* Jeton *minimax(int profondeur, Coups *positions, int joueur); */ + #endif diff --git a/src/minimax.c b/src/minimax.c index 37c7e25..656956d 100644 --- a/src/minimax.c +++ b/src/minimax.c @@ -2,8 +2,46 @@ void action_joueur_minimax(Jeu *jeu, int couleur) { // TODO + int ligne = -1, colonne = -1; - (void)jeu, (void)couleur; - - return; + jeu_joueur(jeu, ligne, colonne, couleur); } + +/* Jeton *h(Jeton *p) { + // TODO ?? + return p; +} + +Jeton *_minimax(Element *element) { + return max(minimax(element->suivant)); +} + +Jeton *minimax(int profondeur, Coups *positions, int joueur) { + + if (positions->taille_liste == 1) { + // TODO ?? + return h(positions->coups->premier->jeton); + } + + // Profondeur maximale + if (profondeur == 0) { + // TODO ?? + return h(positions->coups->premier->jeton); + } + + return _minimax(positions->coups->premier); + + // Joueur 1 = MAX + // Joueur 2 = MIN + + // minimax(profondeur n, position p, joueur J) + // - si p est terminale + // return h*(p) + // - si n = 0 # On a atteint la profondeur maximale + // return h(p) + // - sinon, soit p1, ..., pm les m positions accessibles depuis p + // - si J = MAX + // return max minimax(n - 1, pi, MIN) # 1 <= i <= m + // - si J = MIN + // return min minimax(n - 1, pi, MAX) # 1 <= 1 <= m +} */