1 points par arcoding 2 시간 전 | Aucun commentaire pour le moment. | Partager sur WhatsApp

J’ai implémenté une IA de morpion en UmmLang.
UmmLang est un langage de programmation ésotérique qui ne fournit guère plus que des variables, des entrées/sorties, des conditions et des sauts de ligne.

[ eoeoeomeoeoeo,,,,,,,, sigeoeoeok dongtaneo?jun. ] il a cette apparence.

Il n’existe presque pas de structures de contrôle classiques comme les boucles ou les fonctions. Même les entiers doivent être représentés uniquement avec des points (.), des virgules (, ) et des espaces, ce qui en fait un environnement très peu pratique pour implémenter des algorithmes classiques.

J’ai d’abord implémenté un morpion 2×1 afin de valider la représentation du plateau et la manière d’implémenter l’IA.
Chaque case a été associée à une variable, et les états vide, X et O ont été représentés respectivement par 0, 1 et 2, puis tous les états possibles ont été énumérés avec des instructions conditionnelles Dongtan (IF) pour décider où l’IA devait jouer.
Au cours de ce processus, j’ai également construit l’interface d’affichage du plateau et la structure de traitement des entrées utilisateur.

Je l’ai ensuite étendu à un morpion 3×3.
Le problème, c’est qu’il existe environ 4 520 états de jeu légaux, ce qui rendait irréaliste l’écriture manuelle de tous les cas.
J’ai donc écrit un générateur de code séparé en Python.
Le générateur exclut tous les états où le nombre de O est supérieur à celui de X ou où la partie est déjà terminée, puis calcule pour chaque état le meilleur coup d’une IA de morpion (basée sur minimax).
Les résultats calculés ont ensuite été automatiquement convertis en conditions Dongtan d’UmmLang afin de générer le fichier case.umm.

J’ai finalement inséré dans le code source principal les milliers de branches Dongtan générées pour compléter la logique de l’IA.
Lorsque les coordonnées saisies par le joueur sont reportées dans les variables du plateau, les conditions générées recherchent le cas correspondant à l’état actuel du jeu et exécutent le coup de l’IA.
Le plateau est ensuite réaffiché, puis le programme saute à la partie d’entrée utilisateur avec la syntaxe Jun afin de former la boucle de jeu.
Autrement dit, à l’exécution, aucun parcours ni calcul n’est effectué : seules des conditions générées à l’avance sont exécutées. Ce n’est pas optimisé, mais cela m’a permis d’implémenter une IA de morpion.

J’ai aussi laissé sur GitHub la méthode pour y jouer directement sur le site Ryugod.

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.