Morpion Invincible - 1/6 - Un jeu trivial
- 17 avr.
- 2 min de lecture
Lien vers le repo du projet : https://github.com/vohorgeez/Morpion-invincible
...oui enfin jusqu'à ce qu'on essaie de le coder, hein (comme toujours).
Le morpion, on y a tous joué. Sur un coin de cahier. Quelques secondes, quelques croix, quelques ronds, et c'est plié.
C'est le jeu le plus simple du monde.
C'est pour cette raison que j'ai choisi de commencer par lui pour coder une IA de jeu. Rapide, propre, un bon échauffement.
(Le premier bug est apparu en un quart d'heure 🫣)

Un jeu trivial ? (avec un point d'interrogation)
Le morpion a exactement 9 cases. On est loin des échecs, donc. Un plateau qui tient dans un tableau de 9 entiers. Des règles qu'on explique en 10 secondes.
Mais évidemment, quand on ouvre un éditeur de code, rien n'est simple. Version numérique du syndrome de la page blanche (ou du repo vide mais ça claque moins) : Comment représenter le plateau ? Comment détecter une victoire ? Comment générer tous les coups possibles ? Et surtout : comment faire jouer une IA qui ne perde jamais ?
C'est surtout le dernier point qui est intéressant, forcément. Parce qu'une IA imbattable, ça ne s'improvise pas. ça s'appelle Minimax, ça explore des arbres de décision, et ça force à penser comme une machine.
En somme une machine est dépourvue d'intuition et d'expérience, mais elle peut jouer parfaitement, simplement en explorant méthodiquement toutes les possibilités. Minimax ne "réfléchit" pas, il calcule.
Ce qu'on construit
On va être clair, ce projet est un prétexte. Un prétexte pour implémenter un algo classique, le comprendre vraiment, et le rendre praticable, jouable.
Le stack : Python pour la logique, JavaScript vanilla pour l'UI. Pas de framework. Pas de magie. Juste du code qu'on peut lire ligne par ligne et expliquer sans bégayer en suédois.
L'objectif n'est pas d'impressionner avec de la complexité. C'est de montrer, article par article, qu'on comprend ce qu'on fait et pourquoi on le fait.

Dans le prochain article, nous verrons comment transformer un plateau de morpion en structures de données !



Commentaires