« Moteur d’échecs expérimental » : différence entre les versions
| Ligne 23 : | Ligne 23 : | ||
=== Les problèmes rencontrés === |
=== Les problèmes rencontrés === |
||
En commençant à vouloir créer ces fonctions là, il y avait toujours un problème qui faisait que soit la fonction ne me renvoyait pas tous les coups possibles, soit me renvoyait trop de coups (par exemple, le cas ou la pièce n'a pas le droit de passer au dessus d'une autre pièce, sauf le cavalier qui lui en a le droit, a posé énormément de problèmes car de la façon que j'avais codé mes fonctions, et ce, même en essayant de réparer le problème, elles passaient quasiment tout le temps au dessus alors qu'elles ne devaient pas passer au dessus). |
En commençant à vouloir créer ces fonctions là, il y avait toujours un problème qui faisait que soit la fonction ne me renvoyait pas tous les coups possibles, soit me renvoyait trop de coups (par exemple, le cas ou la pièce n'a pas le droit de passer au dessus d'une autre pièce, sauf le cavalier qui lui en a le droit, a posé énormément de problèmes car de la façon que j'avais codé mes fonctions, et ce, même en essayant de réparer le problème, elles passaient quasiment tout le temps au dessus alors qu'elles ne devaient pas passer au dessus). J'ai donc passé beaucoup de temps à rendre fonctionnelle cette partie du code et n'a pas pu en consacré sur l'interprétation des coups et les réponses. |
||
=== Ce qui a du être finalement fait === |
=== Ce qui a du être finalement fait === |
||
Version du 1 mai 2026 à 16:19
Introduction au sujet
Les premiers programmes dit "moteurs d'échec" le jour dans les années 1950, avec le développement des premiers ordinateurs. Le premier programme fut Turochamp, écrit par Alan Turing qui a notamment joué un rôle important durant la Seconde Guerre Mondiale en créant Énigma (que je ne développerai pas ici), mais le principe de moteur d'échecs a commencé à apparaître à la fin du XVIIIeme siècle, même s'il s’agissait d'un humain caché dans une boite qui jouait les coups.
Quelques moteurs d'échecs connus
Depuis Turochamp, Une infinité de moteurs d'échecs ont vu le jour, tous plus ou moins puissant et développés par des informaticiens et des joueurs d'échecs. Nous vous en présentons 3 importants dans le monde des échecs ci-dessous :
- Deep Blue : Premier moteur d'échecs à battre officiellement un joueur d'échecs professionnel (2 victoires, 3 parties nulles et 1 défaite contre Garry Kasparov, champion du monde à ce moment là en 1997)
- Stockfish : Moteur d'échecs considéré comme le moteur d'échec conventionnel le plus puissant du monde (Classement Elo de 3793 points, ce qui est un record du monde à cette date)
- AlphaZero : Moteur d'échecs à apprentissage, utilisant l'approche généralisée d'AlphaGo Zero et donc adapté pour jouer aux échecs et au shogi (échecs japonais), il a battu Stockfish en 2017. Cependant, Stockfish n'avait pas accès à toutes ses fonctionnalités, notamment ses tables de finales.
Approfondissement du sujet
Création du moteur d'échecs expérimental en Python
Après quelques études sur les moteurs d'échecs, il a fallu commencer à développer le mien.
Ce qui a été réalisé au départ
Au départ du projet, et après quelques expérimentations avec le module Chess utilisable avec Python, j'ai, en premier lieu, récupéré l'échiquier sous forme de tableau Python et ai voulu développé des fonctions qui me permettaient de récupérer la liste des coups pour chaque pièce sur l'échiquier.
Les problèmes rencontrés
En commençant à vouloir créer ces fonctions là, il y avait toujours un problème qui faisait que soit la fonction ne me renvoyait pas tous les coups possibles, soit me renvoyait trop de coups (par exemple, le cas ou la pièce n'a pas le droit de passer au dessus d'une autre pièce, sauf le cavalier qui lui en a le droit, a posé énormément de problèmes car de la façon que j'avais codé mes fonctions, et ce, même en essayant de réparer le problème, elles passaient quasiment tout le temps au dessus alors qu'elles ne devaient pas passer au dessus). J'ai donc passé beaucoup de temps à rendre fonctionnelle cette partie du code et n'a pas pu en consacré sur l'interprétation des coups et les réponses.
Ce qui a du être finalement fait
Ces problèmes m'ayant pris énormément de temps, je n'ai pas pu commencer la partie renvoi des coups et me suis arrêté à la partie détection des coups possibles, et comme Robin, avec qui je réalisais le projet, a décidé d'arrêter le CMI, il a accepté de me donner son code, beaucoup plus avancé que le mien, pour que je puisse finaliser le projet avec un prototype de moteur d'échec fonctionnel. C'est donc le moteur d'échecs de Robin que je vous présenterai ci-dessous.
Fonctionnement du moteur d'échecs
Quelques matchs contres d'autres moteurs d'échecs
Pour ces matchs, j'ai du composer avec ceux disponibles dans l'application Arena. J'utiliserais donc les moteurs d'échecs suivants :
- AnMon 5.75 : Ce moteur a 2504 points d'Elo.
- Dragon 4.6 : Il ne s'agit pas du moteur réalisé par Komodo. Ce moteur a 2358 d'Elo.
- Spike 1.4 : Ce moteur a 3054 points d'Elo.