Python Tutorial
- jetzt Python programmieren lernen

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 Zug. 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()