Die Spielverwaltung
Die interne Spielverwaltung ist hier ein wenig anspruchsvoller als bei den vorigen Spielen, wo nur geprüft werden musste, ob alle Luftblasen oder Aliens weg sind oder alle Blöcke gelöscht sind oder der Spieler ein verbotenes Objekt berührt hat. Das Programm muss vor allem nach jedem Zug den Spielstand analysieren und prüfen, ob einer der beiden Spieler gewonnen hat. Es muss ebenfalls wissen, wer gerade dran ist und welche Felder noch frei sind.
Damit das Programm nicht ständig untersuchen muss, wo welche Actor-Symbole gerade platziert sind, empfiehlt es sich, alle wichtigen Daten des laufenden Spiels in Variablen unterzubringen, die nach jedem Zug aktualisiert werden.
Als Erstes wäre da die Variable aktiver_spieler. Es gibt Spieler Nr. 1 und Spieler Nr. 2. Nach jedem Zug wechselt der aktive Spieler und damit die Zahl in der Variablen. Dementsprechend wird dann beim Setzen des Symbols entweder die eine oder die andere Grafik für das Symbol verwendet.
Außerdem sollte der aktuelle Spielstand (also welches Symbol an welcher Stelle gesetzt ist) auch in einer Variablen stehen, damit das Programm damit leicht herausfindet, ob jemand gewonnen hat. Dafür bietet sich eine Liste mit dem Namen spielstand an. Um es nicht allzu kompliziert zu machen, verwenden wir hier eine Liste mit 9 Elementen – für jedes Kästchen eins. Jedes Element ist entweder 0 (unbelegt) oder 1 (Spieler 1 hat gesetzt) bzw. 2 (Spieler 2 hat gesetzt).
Am Anfang ist spielstand also [0,0,0,0,0,0,0,0,0], weil noch kein Feld belegt ist.
Wie läuft eine Spielrunde bei TicTacToe ab?
TicTacToe ist kein »Dauer-Action-Spiel«, sondern es ist ein »rundenbasiertes Spiel«. Das heißt, der Spieler macht etwas (setzt ein Symbol in eine Zelle) – und direkt danach (und nur dann) wird geprüft, ob das Spiel beendet ist oder nicht und der nächste Spieler drankommt. Das ist eigentlich alles. Detaillierter gesagt läuft jeder Zug in diesem Spiel so ab:
Beim Mausklick auf eine Zelle:
-
Prüfe, ob die Zelle leer ist (sonst passiert nichts). Wenn ja:
-
Setze das Symbol des aktiven Spielers in die Zelle.
-
Prüfe, ob er das Spiel damit gewonnen hat. Wenn nein:
-
Prüfe, ob das Spiel unentschieden beendet wurde (keine Zelle mehr frei). Wenn nein:
Wechsle den Spieler, und fange noch mal von oben an.
-
-