Spielfigur setzen - Spielfeld mit X oder O kennzeichnen
Über unser bisheriges Programm bekommen wir nun in einer Variablen das gewünschte Feld. In dieses können wir nun „X“ oder „O“ für die Spielfigur des jeweiligen Spielers eintragen. Danach müssen wir wieder das Spielfeld ausgeben:
while spiel_aktiv:
# Eingabe des aktiven Spielers
spielzug = spieler_eingabe()
if spielzug:
spielfeld[spielzug] = 'X'
# aktuelles Spielfeld ausgeben
spielfeld_ausgeben()
Allerdings haben wir noch gar keinen zweiten Spieler bzw. den Wechsel von Spieler X zu Spieler O.
Also brauchen wir ganz am Anfang wieder eine Variable für den aktuellen Spieler spieler_aktuell
. Diesen lassen wir auch vor der Eingabe durch den Spieler am Bildschirm ausgeben:
# Spiel Tic-Tac-Toe
print("Tic-Tac-Toe Python Tutorial")
spiel_aktiv = True
spieler_aktuell = 'X'
Und in unserer Hauptroutine:
while spiel_aktiv:
# Eingabe des aktiven Spielers
print ("Spieler " + spieler_aktuell + " am Zug")
spielzug = spieler_eingabe()
if spielzug:
spielfeld[spielzug] = spieler_aktuell
# aktuelles Spielfeld ausgeben
spielfeld_ausgeben()
automatischer Spielerwechsel
Jetzt benötigen wir einen automatischen Wechsel des Spielers nach jedem Spielzug. Dazu erstellen wir eine Funktion mit dem Namen spieler_wechseln()
. Dabei darf man nicht vergessen, die Variable spieler_aktuell
auf global
zu setzen.
def spieler_wechseln():
global spieler_aktuell
if spieler_aktuell == 'X':
spieler_aktuell = 'O'
else:
spieler_aktuell = 'X'
Diese Funktion rufen wir nach der Ausgabe von Spielfeld in unserer Hauptschleife auf:
while spiel_aktiv:
# Eingabe des aktiven Spielers
print ("Spieler " + spieler_aktuell + " am Zug")
spielzug = spieler_eingabe()
if spielzug:
# spielfeld[spielzug] = 'X'
spielfeld[spielzug] = spieler_aktuell
# aktuelles Spielfeld ausgeben
spielfeld_ausgeben()
# Spieler wechseln
spieler_wechseln()
Hier der bisherige komplett Code:
# Spiel Tic-Tac-Toe
print("Tic-Tac-Toe Python Tutorial")
spiel_aktiv = True
spieler_aktuell = 'X'
# Spielfeld als Liste erstellen
spielfeld = [" ",
"1","2","3",
"4","5","6",
"7","8","9"]
# Spielfeld ausgeben
def spielfeld_ausgeben():
print (spielfeld[1] + "|" + spielfeld[2] + "|" + spielfeld[3] )
print (spielfeld[4] + "|" + spielfeld[5] + "|" + spielfeld[6] )
print (spielfeld[7] + "|" + spielfeld[8] + "|" + spielfeld[9] )
# Spielereingabe und Kontrolle der Eingabe
def spieler_eingabe():
global spiel_aktiv
while True:
spielzug = input("Bitte Feld eingeben: ")
# vorzeitiges Spielende durch Spieler
if spielzug == 'q':
spiel_aktiv = False
return
try:
spielzug = int(spielzug)
except ValueError:
print("Bitte Zahl von 1 bis 9 eingeben")
else:
if spielzug >= 1 and spielzug <= 9:
return spielzug
else:
print("Zahl muss zwischen 1 und 9 liegen")
def spieler_wechseln():
global spieler_aktuell
if spieler_aktuell == 'X':
spieler_aktuell = 'O'
else:
spieler_aktuell = 'X'
# aktuelles Spielfeld ausgeben
spielfeld_ausgeben()
while spiel_aktiv:
# Eingabe des aktiven Spielers
print ("Spieler " + spieler_aktuell + " am Zug")
spielzug = spieler_eingabe()
if spielzug:
# spielfeld[spielzug] = 'X'
spielfeld[spielzug] = spieler_aktuell
# aktuelles Spielfeld ausgeben
spielfeld_ausgeben()
# Spieler wechseln
spieler_wechseln()