Hi,
eine Verständnisfrage: Ich habe mir ein einfaches Tic Tac Toe-Spiel mit GUI geschrieben, mehr als Fingerübung, denn weil ich es gerade bräuchte.
Ich habe mir jetzt überlegt einen Computer-Gegner zu implementieren. Meine Frage ist jetzt, wie man das professionell machen würde, weil das harte Codieren mit if-elif-else macht angesichts der zahlreichen möglichen Spielzüge m. E. keinen Sinn mehr.
Wie ginge das professionell? Kommt da die Graphentheorie zum Einsatz?
Besten Gruß
pixewakb
TicTacToe
@pixewakb: Ganz allgemein könnte man einen Entscheidungsbaum betrachten der alle möglichen Spielverläufe von der aktuellen Ausgangssituation aus betrachtet. Also für jeden möglichen Spielzug den ein Spieler machen kann, alle die der Gegner machen kann usw. in einem Baum abbilden. Und dann kann man sich anschauen welchen Ausgang die ganzen Blätter nehmen. Und dann kann man von den Blättern zurück rechnen bei welchem Zug das Verhältnis Gewinnen/Verlieren am günstigsten ist.
Bei TicTacToe kann man das noch komplett machen, ohne irgendwelche Optimierungen, denn da hätte ein voller Baum von einem leeren Spielfeld ausgehend maximal 362.880 Knoten. Real weniger weil man natürlich nicht in allen Fällen bis zum total gefüllten Spielfeld als letztem Zustand kommt wenn vorher schon eine Gewinnsituation für einen der beiden Spieler eintritt.
Bei TicTacToe kann man das noch komplett machen, ohne irgendwelche Optimierungen, denn da hätte ein voller Baum von einem leeren Spielfeld ausgehend maximal 362.880 Knoten. Real weniger weil man natürlich nicht in allen Fällen bis zum total gefüllten Spielfeld als letztem Zustand kommt wenn vorher schon eine Gewinnsituation für einen der beiden Spieler eintritt.
Ich hab dieses Buch gelesen und fand es sehr hilfreich um einen allgemeinen Überblick zum Thema zu bekommen. Und ein passender XKCD-Strip.