Bonjour la communauté,
Je suis développeur web depuis plusieurs années maintenant et bien que plutôt orienté back, il m’arrive de toucher au front avec JavaScript. Je me suis récemment remis à faire quelques parties d’échecs et ça m’a donné l’envie de faire une IA pour me combattre. Des projets de jeux d’échecs ce n’est pas ce qui manque, donc on peut dire que ce qui m’a motivé c’est plus le fait de m’amuser à développer que le résultat final.
Le projet est dans un état fini, puisque les règles sont opérationnelles, et on peut jouer entre humains, contre une IA random ou contre une IA MinMax voire même faire jouer des IA entre elles.
Tester
Vous pouvez directement tester le jeu en ligne :
Ou vous pouvez télécharger le projet github, vous pourrez ainsi choisir quels agents vont s’affronter :
Algorithme MinMax
Rien de fabuleux à cet algorithme puisqu’il est bien connu et documenté sur la toile. Il calcule quel est le meilleur coup à jouer en simulant tous les coups possible. Il fait son choix en partant du principe que l’adversaire fera toujours le meilleur choix.
La principale limite de cet algorithme c’est qu’il est très gourmand. Plus on simule de profondeurs plus on va augmenter exponentiellement le nombre de calculs. Ainsi, pour un ordinateur portable ou un smartphone, je paramètre à 2 le nombre de profondeurs, ce qui veut dire qu’il calcule les coups pour le tour actuel + 2 tours dans le futur. Donc si je suis le joueur blanc, il calcule mon meilleur coup actuel, puis pour chacun de ces coups le meilleur suivant du joueur noir, puis pour chacun de ces coups, le meilleur coup du joueur blanc du tour suivant. Avec un bon processeur, ça reste viable de mettre 3 profondeurs (testé avec un Processeur Ryzen 5 2600).
A venir
Alors là ça dépend, l’état actuel du projet était mon objectif. Donc à priori le projet est fini. Ceci dit, si d’autres personnes ont réalisé des projets similaires et ont des conseils en terme d’optimisation ou de scoring, je reste preneur. Je pourrais mettre en place une IA de type supervisé, mais pour que ce soit pertinent, il faut une grande base de données d’exemples de parties. Quitte à faire une IA plus poussée j’aurai préféré quelque chose de non supervisé.
Voilà