Elle prend en argument le jeu, et la case précise ou le jeton serait potentiellement posé. De
là, elle compte le nombre de pions alignés autour de cette position donnée. Et c’est grâce à
ça qu’elle ne parcourt pas tout le jeu : elle ne regarde que les 8∗3cases autour de la positon
donnée.
Elle retourne le nombre de pions alignés par le coup ajouté au nombre qu’aurait le joueur
adverse jouant au même endroit (c’est une sorte de valeur de "blocage"). Afin de rendre plus
important un grand nombre de jetons alignés, on renvoie la somme des puissances pour induire
un non-linéarité.
4 Algorithme minimax
On ajoute maintenant un autre couple de fichiers : minimax.h,minimax.c, qui construirons
l’arbre de l’algorithme minimax.
Cet algorithme consiste, à chaque étape, à regarder tous les coups possibles de chaque joueurs,
et à considérer soit celui qui maximise le score (si c’est au joueur de jouer) soit qui le minimise
(si c’est à l’adversaire).
On crée donc une structure d’arbre, qui contient la valeur d’un coup ainsi que la colonne à
jouer pour obtenir cette valeur. En construisant récursivement l’arbre à l’aide de l’algorithme
minimax, le coup à jouer sur la racine sera le meilleur coup à jouer pour l’IA.
Pour construire ces arbres, il faut pouvoir les évaluer.
Avec la première fonction d’évaluation, on ajoutait les valeurs des coups successifs pour avoir
une idée de l’évaluation d’une suite de coup. On verra plus bas que suite au changement de
fonction d’évaluation, l’algorithme a également un peu changé.
5 Raffinements
Suite à la première version, de nombreuses petites choses ont été ajoutées et modifiées pour
améliorer l’intelligence de cette IA.
5.1 Fonction de score
Le problème de l’ancienne fonction d’évaluation est qu’elle ne prenait en compte que les
pions juste autour du coup joué, pas la globalité de la grille. Elle pouvait donc ne pas voir un
"ancien" alignement de trois pions un peu plus loin que le coup considéré à ce moment.
La fonction d’évaluation a donc été modifiée, afin d’évaluer non pas la valeur d’un coup
donné, mais celle de la grille en entier.
Pour cela, on compte tous les alignements de chaque joueurs, et on les additionne, toujours
avec une fonction puissance pour renforcer l’importance des nombreux pions alignés. Les pions
alignés par je joueur comptent positivement, et ceux par l’adversaire négativement.
Pour la construction de l’arbre minimax, on ne calcule donc plus que la fonction sur les feuilles,
et on choisi pour les feuilles le max ou le min de ses fils en fonction du joueur considéré. Cela
ressemble donc plus à l’algorithme minimax "normal".
A été également ajouté un cas particulier pour forcer l’IA à jouer en cas d’alignement po-
tentiel de 4 pions.
Enfin, après des tests à la main de l’IA, elle semblait trop peu défensive, la valeur des pions
de l’adversaire a donc été augmentée, afin de la forcer à jouer plus défensif qu’offensif.
3