« Moteur d’échecs expérimental » : différence entre les versions
| Ligne 14 : | Ligne 14 : | ||
= Création du moteur d'échecs expérimental en Python = |
= 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 === |
=== Ce qui a été réalisé au départ === |
||
Au départ du projet, et après quelques expérimentations, 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. |
|||
Au départ du projet |
|||
=== 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). |
|||
=== Ce qui a du être finalement fait === |
=== 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. |
|||
Version du 1 mai 2026 à 15:54
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.
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, 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).
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.