Wenn Du nicht mit einer soliden, von der GUI abgekoppelten Basis anfängst, dann wird das mit dem Nachbessern höchstwahrscheinlich nur komplizierter als es sein müsste. Das sollte man sauber trennen, auch bei einer ersten Version. Denn wenn man von der GUI anfängt und GUI und Logik vermischt, kann man sich Netzwerk und KI eigentlich schon abschminken, ohne dass man das von grundauf von der anderen Seite her noch einmal neu schreibt.
Denn sowohl Netzwerk als auch KI haben gemeinsam, dass man das Spiel auch ohne die GUI betreiben können muss. Beim Netzwerk ist die GUI auf einem ganz anderen Rechner als das Spiel selbst, und die KI sollte ja keine Bildschirmphotos analysieren und Tastatur- und Maus-Ereignisse synthetisch erzeugen müssen um mit dem Spiel zu interagieren.
Ich würde mit dem Spiel selbst, den Datenstrukturen um den Spielzustand zu modellieren, anfangen. Gesteuert mit einer ganz einfachen Schnittstelle über's Terminal. Das Spielfeld als zweidimensionales Zeichenfeld mit 'z's für die Zwerge und 'T's für die Trolle. Buchstaben an den Spalten und Zahlen an den Zeilen, so dass man Felder mit Angaben wie 'A17' beschreiben kann. So etwas in dieser Richtung:
Code: Alles auswählen
ABCDEFGHIJKLMNO
-----
1 /zz zz\
2 /z z\
3 /z z\
4 /z z\
5 /z z\
6|z z|
7|z TTT z|
8| TXT |
9|z TTT z|
10|z z|
11 \z z/
12 \z z/
13 \z z/
14 \z z/
15 \zz zz/
-----
Zwerge sind am Zug.
Zug eingeben:
Vielleicht im nächsten Schritt mit dem `curses`-Modul, damit man ein wenig Farbe in die Sache bringen kann, weil die Felder mit einem Schachbrettmuster besser zu erkennen sind.