Série en 12 articles

Programmer son moteur d’échecs en Python

Construire un moteur de zéro, article après article : représenter l’échiquier, générer les coups légaux, évaluer une position, chercher le meilleur coup, et finir par le brancher dans une vraie interface. Chaque étape livre du code qui tourne.

La particularité de cette série tient en un mot : vérifiable. La correction du générateur de coups se prouve par perft, en comparant à des valeurs de référence publiées. La force du moteur se mesure contre Stockfish bridé. À chaque article, tu sais si ton code est juste, et de combien tu as progressé.

0 article publié sur 12. Premier article le 13 juillet 2027.

Phase 1 — L'échiquier

Avant de chercher un bon coup, il faut savoir quels coups existent. C'est la partie la moins spectaculaire et celle où se logent tous les bugs.

  1. Un moteur d'échecs, c'est quoi exactement Environnement installé, première position affichée à venir
  2. Représenter un échiquier Lecture et écriture de FEN sans perte à venir
  3. Générer les coups légaux Roque, en passant et promotions produits correctement à venir
  4. Perft : prouver que le générateur est juste 6 positions de référence, jusqu'à la profondeur 5 à venir

Phase 2 — Le premier moteur qui joue

De la partie au hasard au premier programme qui choisit vraiment. À la fin de cette phase, ton moteur bat un débutant.

  1. Un moteur qui joue au hasard Partie complète jouée sans coup illégal à venir
  2. Évaluer une position : le matériel Évaluations comparées à celles de Stockfish à venir
  3. Minimax : chercher à plusieurs coups Mats en 2 trouvés systématiquement à venir
  4. Négamax et élagage alpha-bêta Même coup joué, nœuds visités divisés à venir

Phase 3 — Le rendre fort

L'algorithme est en place. Tout ce qui suit consiste à chercher plus profond dans le même temps, et à évaluer moins bêtement.

  1. Ordonner les coups Profondeur atteinte en 5 secondes, avant et après à venir
  2. Approfondissement itératif et gestion du temps Le moteur respecte un budget de temps imposé à venir
  3. Quiescence et tables de cases Effet de horizon supprimé sur positions tactiques à venir

Phase 4 — Le sortir de ton terminal

Un moteur qui ne parle pas UCI ne sert à rien. Dernière étape : le brancher dans une vraie interface et mesurer honnêtement sa force.

  1. Parler UCI, et mesurer son Elo Match contre Stockfish bridé, estimation Elo à venir