Spielzug erfassen vom Spieler
Der Spieler kann nun anhand der Zahleneingabe 1-9 sein gewünschtes Feld auswählen. Dazu wird der Python-Befehl input()
genutzt ( input-nutzereingaben.htm ):
spielzug = input("Bitte Feld eingeben: ")
print (spielzug)
Wichtig zu berücksichtigen ist, dass wir durch input()
ein String zurückgeliefert bekommen. Lassen wir diesen zum Testen uns ausgeben:
spielzug = input("Bitte Feld eingeben: ")
print (spielzug)
print (type(spielzug))
Das ist in diesem Fall wenig hilfreich. Daher wandeln wir diese Eingabe in eine Ganzzahl um. Python stellt uns für das Umwandeln (Englisch „casting“) entsprechende Anweisungen zur Verfügung:
spielzug = input("Bitte Feld eingeben: ")
spielzug = int(spielzug)
print (type(spielzug))
Jetzt sollten wir noch sicher gehen, dass eine Zahleneingabe erfolgt, die auch ein Feld repräsentiert – also irgendwas zwischen 1 und 9. Ansonsten muss eine Meldung erscheinen und eine weitere Spielereingabe angefordert werden. Hier sperren wir unser Input in eine while
-Schleife ( while-schleife.htm ). Solange dieses nicht entsprechend erfüllt ist, kommt immer wieder die Benutzerangabe.
Wir erstellen uns eine eigene Funktion für die Benutzereingabe. In dieser wird die Eingabe kontrolliert und nur mögliche Züge (Eingaben) werden zugelassen.
def spieler_eingabe():
# Eingabe durch Spieler und Überprüfung
Wir wollen so lange vom Spieler eine Eingabe, solange diese nicht korrekt ist. Daher packen wir diese Aktion in eine unendliche Schleife:
def spieler_eingabe():
while True:
spielzug = input("Bitte Feld eingeben: ")
Um sicherzustellen, dass die richtige Eingabe reinkommt, kontrollieren wir im ersten Schritt durch eine except
, ob es sich um einen nummerischen Wert handelt:
def spieler_eingabe():
while True:
spielzug = input("Bitte Feld eingeben: ")
try:
spielzug = int(spielzug)
except ValueError:
print("Bitte Zahl von 1 bis 9 eingeben")
else:
return spielzug
Im zweiten Schritt kontrollieren wir, ob es sich um eine Zahl zwischen 1 und 9 handelt:
def spieler_eingabe():
while True:
spielzug = input("Bitte Feld eingeben: ")
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")
Ist alles korrekt, wird die Zahl zurückgeliefert über return
Unser bisheriger Python-Code:
# Spiel Tic-Tac-Toe
print("Tic-Tac-Toe Python Tutorial")
# 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] )
spielfeld_ausgeben()
# Spielereingabe und Kontrolle der Eingabe
def spieler_eingabe():
while True:
spielzug = input("Bitte Feld eingeben: ")
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")
spielzug = spieler_eingabe()
print("Spielzug: " + str(spielzug))