Dein Ziel ist, dass zwei menschliche Spieler gegeneinander Tic Tac Toe spielen können, in dem sie ihr gewünschtes Feld eingeben und dann das neue Spielfeld angezeigt wird.
Du musst den folgenden Code bei "..." erweitern.
# Spielfeld erstellen
def init_spielfeld():
spielfeld = [" ",
"1","2","3",
"4","5","6",
"7","8","9"]
return spielfeld
# Da die Indizierung bei 0 beginnt, das aber zu Verwirrung führen kann, bleibt das erste Feld leer.
Anmerkung:
Das Spielfeld besteht aus einem 3x3 Feld. Das Spielfeld soll so dargestellt werden, dass die Zahlen 1 bis 9 darauf sichtbar sind. Beachte, dass wir die Zahlen in der Liste 'spielfeld' als Strings darstellen. Im Spiel kann man dann die Zahl (als Integer) eingeben, auf deren Feld man setzen möchte. Damit die Zahlen auf dem Spielfeld mit der eingegebenen Zahl übereinstimmen, lassen wir in der Liste 'spielfeld' die erste Position leer. In Python beginnt die Indizierung bei Listen bei 0.
# Spielfeld ausgegeben
# Das Spielfeld besteht aus den Zahlen 1 bis 9 auf einem drei mal drei Feld.
def spielfeld_ausgeben(spielfeld):
print(...)
# überprüfe deine Funktion
spielfeld = init_spielfeld()
spielfeld_ausgeben(spielfeld)
Wir überprüfen, ob eine Zahl eingegeben wurde. Es ist zum Beispiel nicht möglich, einen Buchstaben in einen Integer mit int() zu verwandeln. Das Programm würde in diesem Fall einen Fehler werfen und abbrechen. Wir nutzen eine Ausnahmebehandlung, die Fehler auffängt.
# Spieler gibt gewünschtes Feld (1-9) oder Abbruch (0) ein
def eingabe():
while True:
try:
# input() nimmt Eingaben über die Tastatur auf
feld = input("Auf welches Feld möchtest du setzen (1-9)? 0 beendet das Spiel.")
feld = int(feld)
break
# Falls keine Zahl eingegeben wurde, Eingabe wiederholen
except ValueError:
print("Bitte eine Zahl eingeben.")
return feld
# Korrekte Eingabe überprüfen
# Die Funktion bekommt das gewünschte Feld und das Spielfeld übergeben. Wenn das Feld eine Zahl zwischen 1 und 9 ist
# und dieses Feld noch frei ist, soll die Funktion "True" zurück geben, ansonsten "False".
def korrekt(feld, spielfeld):
if ...: # Zahl zwischen 0 und 9 und nicht belegt
print("Das Feld ist frei!")
...
else:
print("Feld belegt oder Zahl nicht zwischen 0 und 9!")
...
# Spieler 1 beginnt
spieler = 1
# Es kann 9 mal ein Feld belegt werden
counter = 0
while True:
# Eingabe des Zuges
print("Es ist Spieler ", spieler, " am Zug.")
feld = eingabe()
# Spiel beenden, wenn die Eingabe 0 ist
...
# Bei korrekter Eingabe Spielzug ausführen
if korrekt(feld, spielfeld):
if spieler == 1:
spielfeld[feld] = 'X'
spieler = 2
else:
spielfeld[feld] = '0'
spieler = 1
# ansonsten nochmals Eingabe einfordern
# Hinweis: https://www.codeflow.site/de/article/how-to-use-break-continue-and-pass-statements-when-working-with-loops-in-python-3
else:
print("Bitte ein korrektes Feld eingeben.")
...
spielfeld_ausgeben()
# Counter für Spielrunden hochzählen.
# Wenn alle Felder belegt sind, soll das Spiel beendet werden
...
Super! Jetzt kannst du Tic Tac Toe gegen einen menschlichen Mitspieler spielen!
Schreibe eine Funktion, die erkennt, ob ein Spieler gewonnen hat!
Wenn ihr Fragen oder Anregungen zu der Aufgabe (oder Lösung) habt, dann tauscht euch gerne im Chat darüber aus oder schreibt uns eine E-Mail (an info@bw-ki.de).
Wir freuen uns auch immer über Feedback (auch unter info@bw-ki.de):