Impressum
< Index

Tic-Tac-Toe Stufe 2 - Daten

Wir erweitern unsere Klasse um ein privates Attribut feld. In diesem Attribut speichern wir für jede Feldposition ob es frei ist, ein Kreuz oder einen Kreis enthält.
TTT
-feld:int[][]
+TTT()
+paint()
Wir codieren einen Kreis mit einer 1 und ein Kreuz mit einer -1. Ein freies Feld ist eine 0.
Da wir 3x3 Feldpositionen haben nehmen wir für Feld ein Array von Arrays.
Im Konstruktor initialisieren wir es mit:
self.__feld=[[1,0,-1],[0,0,0],[0,0,0]]
Die 1 und -1 dienen zum jetzigen Zeitpunkt zum Testen. Wir wollen sehen, ob sie richtig dargestellt werden, doch dazu muss erst die paint-Methode erweitert werden.
Später initialisieren wir das Feld nur mit 0en (also freien Feldern).

Erweiterung der Paint()-Methode

Wir erweitern unsere Klasse um zwei Methoden, die ein Kreis bzw. einen Kreis an die Feldposition (x,y) zeichnen.
TTT
-feld:int[][]
+TTT()
+paint()
-kreuz(x:int, y:int)
-kreis(x:int, y:int)
Die Methoden kreis() und kreuz()
def __kreuz(self, x, y):
    self.__canvas.create_line(x*100+10 , y*100+10, x*100+90, y*100+90, width=5)
    self.__canvas.create_line(x*100+90, y*100+10, x*100+10 , y*100+90, width=5)
    
def __kreis(self, x, y):
    self.__canvas.create_oval(x*100+10 , y*100+10, x*100+90, y*100+90, width=5)
Gui mit Spielfeld und Symbolen
Gui mit Spielfeld und Symbolen
Die Mehtode paint muss erweitert werden.
Wir laufen über alle Spalten mit einer for-Schleife. In jedem Schleifendurchlauf laufen wir über alle Zeilen.
Nachdem wir 3 Spalten und 3 Zeilen haben eignen sich hierfür zwei for-Schleifen, die von 0 bis 2 laufen.
In der Schleife überprüfen wir, ob die Feldposition __feld[x][y] eine eins oder eine minus eins enthält.
Ist es eine 1 so zeichnen wir einen Kreis an diese Position.
Ist es eine -1 so zeichnen wir eine Kreuz.
Ist es eine 0 machen wir nichts.
Setzen Sie das Struktogramm um.
Testen sie ihr Feld mit unterschiedlichen Vorbelegungen. Prüfen sie ob jede davon richtig dargestellt wird.
Struktogramm zur Erweiterung von paint
paint-Erweiterung