You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Stéphane a47f23af56 Suppression des copies des IA. 7 years ago
..
Makefile Suppression des copies des IA. 7 years ago
README Ajout du README de l'IA. 7 years ago
ai.c Commentaires 7 years ago
ai.h Modification du choix des mouvements pour ne pas aller dans une branche interdite. 7 years ago
dameschinoises.h Ouverture de la branche de l'IA 8 years ago
gamestate.c Suppression des fonctions inutiles. 7 years ago
gamestate.h Commentaires 7 years ago
list.c Commentaires 7 years ago
list.h Choix aléatoire entre deux mouvements si ceux-ci ont le même score. 7 years ago
queue.c Commentaires 7 years ago
queue.h Modification de la fonction dressant l'arbre des mouvements possibles. 7 years ago
strategy.c Commentaires 7 years ago
strategy.h Commentaires 7 years ago
tree.c Suppression des fonctions inutiles. 7 years ago
tree.h Commentaires 7 years ago

README

Résumé du fonctionnement de l'IA

Le choix d'un mouvement par l'IA se fait en plusieurs étapes :

*Lister les mouvements possibles
La première étape consiste à dresser un arbre de tous les mouvements possibles au cours d'un tour. L'arbre contient les numéros des cases par lesquelles le mouvement passe. L'IA s'interdit d'avoir plusieurs suites de sauts qui passent par la même case. En effet, si une case peut être atteinte grâce à une suite de sauts, elle permettra de se rendre dans les mêmes cases que si elle avait été atteinte par n'importe quelle autre suite de sauts. Comme les seules cases vraiment importantes sont les cases de départ et d'arrivée, il est inutile de stocker 2 fois les mêmes cases dans l'arbre.

*Attribuer un score à chaque mouvement
L'IA attribue un « score » à chacun des mouvements listés, selon 3 critères (voir la fonction moveScore) :
- se rapprocher le plus possible de la pointe de la branche d'arrivée (critère coefficienté à 8) ;
- bouger les pions les plus en retard (critère coefficienté à 2) ;
- se rapprocher de la case libre du triangle d'arrivée la plus proche (critère coefficienté à 1 ; sans ce critère, l'IA ferait des mouvements incohérents en toute fin de partie).

*Retourner les mouvements à l'interface graphique
L'IA renvoie chaque étape du mouvement choisi à chaque appel à la fonction NextMove. Lorsque les étapes ont toutes été effectuées, elle renvoie le code 0 signifiant que la série de sauts est terminée. Tant que la série de sauts n'est pas terminée, l'IA ne calcule pas de nouveau mouvement.

Pour plus de détails, voir les nombreux commentaires du code.