Je suis en prepa MPSI, et je travaille sur un TIPE en CaML et j'essaye de construire une intelligence artificielle qui joue a Puissance 4. (En utilisant l'algorithme MinMax et si possible apres Alpha-Beta) Mais pour le moment restons simples.
Pour le tableau je pensait organiser ca en matrice (un vect de 6 vects a 7 elements, en reference pour qu'ils soient mutables, avec chaque vect dans le grand vect etant une rangée) en mettant 0 pour une case vide, 1 et -1 pour les pions de chaque joueur. Ensuite pour aider la complexité je pensait garder en plus un petit vect a 7 entrées (rendu mutable) qui garde le nombre de pions dans chaque colonne (comme ca si le joueur veut jouer la colonne 4, je sais exactement les coordonnées ou va tomber son pion sans faire plusieurs tests). Je pensait ensuite construire une fonction d'evaluation qui associerait par exemple 10 000 points pour une rangée complete (victoire) (ou un autre chiffre tres grand) -10 000 pour une perte, et ensuite pour l'evaluation du tableau en cours 3 points pour chaque pion placé dans la colonne du centre, deux a coté, 1 pour un pion plus loin, et 0 pour un pion placé sur le bord (car les pions au centre ont plus de chance de completer une ligne) et 20 points par ligne "quasi" complete (Il suffit que un pion soit placé pour que la ligne soit completée, meme si il n'est pas encore possible de placer se pion encore) la theorie derriere ceci etant que quand le jeu tire a sa fin, si l'ordinateur a plein de lignes quasi completes, au bout d'un moment le joueur devra jouer un truc qui permettra a l'ordinateur de completer une ligne. Et aussi d'associer -20pts pour chaque ligne quasi complete du joueur. Le probleme maintenant est la construction de la fonction d'evaluation. Vu que a chaque tour elle devera s'executer beaucoup de fois (je pensait pour commencer de faire une recherche profonde de 5 tours, ce qui donne a peu pres 17000 executions de la fonction d'evaluation). Quelqun a t'il une idée pour construire simplement cette fonction qui me permettrai de trouver les lignes quasi completes (et completes)? (Si il y a une autre methode que prendre chaque pion de chaque couleur et verifier dans tout les sens si il appartient a une ligne...)
Merci beaucoup
-Cedric
P.S. Si vous avez d'autres idées pour les criteres d'evaluation ou meme la maniere dont je gere les données n'hesitez pas!