1 Punkte von arcoding 2 시간 전 | Noch keine Kommentare. | Auf WhatsApp teilen

Ich habe eine Tic-Tac-Toe-KI in UmmLang implementiert.
UmmLang ist eine esoterische Programmiersprache, die nur Variablen, Ein-/Ausgabe, Bedingungen und Zeilensprünge bereitstellt und

[ eoeoeom-eoeoeo,,,,,,,, sigeoeoeo-keke dongtaneo?jun. ] ungefähr so aussieht.

Übliche Kontrollstrukturen wie Schleifen oder Funktionen gibt es kaum. Selbst Ganzzahlen müssen nur mit Punkten (.), Kommas (,) und Leerzeichen dargestellt werden, weshalb es eine ziemlich unpraktische Umgebung ist, um normale Algorithmen zu implementieren.

Zuerst habe ich 2×1-Tic-Tac-Toe implementiert, um die Darstellung des Spielbretts und die Methode zur KI-Implementierung zu überprüfen.
Jedes Feld wurde einer Variablen zugeordnet; leere Felder, X und O wurden jeweils als 0, 1 und 2 dargestellt. Anschließend wurden alle möglichen Zustände mit Dongtan-(IF-)Anweisungen aufgelistet, sodass die KI entscheiden konnte, wohin sie setzt.
In diesem Prozess habe ich auch die Ausgabeschnittstelle für das Spielbrett und die Struktur zur Verarbeitung der Benutzereingabe erstellt.

Danach habe ich das auf 3×3-Tic-Tac-Toe erweitert.
Das Problem war, dass es etwa 4.520 legale Spielzustände gibt, sodass es praktisch unmöglich war, alle Fälle von Hand zu schreiben.
Deshalb habe ich mit Python einen separaten Codegenerator geschrieben.
Der Generator schließt aus allen Spielzuständen diejenigen aus, in denen O häufiger vorkommt als X oder die Partie bereits entschieden ist, und berechnet dann für jeden Zustand den optimalen Zug der Tic-Tac-Toe-KI (basierend auf Minimax).
Die berechneten Ergebnisse werden automatisch in die Form von Dongtan-Bedingungen in UmmLang umgewandelt, sodass eine Datei case.umm erzeugt wird.

Am Ende habe ich die erzeugten Tausenden von Dongtan-Verzweigungen in den Hauptquellcode eingefügt und damit die KI-Logik fertiggestellt.
Wenn die vom Spieler eingegebenen Koordinaten in den Spielbrettvariablen reflektiert werden, finden die generierten Bedingungen den Fall, der dem aktuellen Spielzustand entspricht, und führen den Zug der KI aus.
Danach wird das Spielbrett erneut ausgegeben, und mit der Jun-Syntax wird zum Benutzereingabeteil gesprungen, wodurch die Spielschleife entsteht.
Das heißt: Zur Laufzeit werden keine Suche und keine Berechnungen ausgeführt, sondern nur vorab generierte Bedingungen. Dadurch ist es zwar nicht optimiert, aber ich konnte eine Tic-Tac-Toe-KI implementieren.

Auf GitHub habe ich auch beschrieben, wie man sie direkt auf der Ryugat-Website spielen kann.

Noch keine Kommentare.

Noch keine Kommentare.