Python Tutorial
- jetzt Python programmieren lernen

Bisher läuft unser Spiel genau eine Runde. Das ist nicht wirklich ein amüsantes Spiel – und das Wort kurzweilig trifft es auch nicht wirklich. Wir wollen, dass unser Spiel so lange läuft, bis entweder ein Spieler gewonnen hat, es unentschieden steht oder das Spiel vorzeitig durch Spieler bewusst beendet wurde.

Bevor wir in unser Spiel eine Schleife einbauen, damit es nicht nach 1 Runde bereits automatisch beendet wird, bauen wir als Erstes die Möglichkeit ein, dass ein Spieler gezielt selber das Spiel beenden kann. Diese Funktion benötigen wir auf jeden Fall - und sobald unser Spiel unendlich lang läuft, ist man froh über die Abbruchmöglichkeit

Spiel beenden über q

Wir wollen die Möglichkeit schaffen, dass der Spieler das Spiel vorzeitig durch die Taste q beenden kann. Gibt der Spieler also anstelle einer Zahl von 1 bis 9 den Buchstaben „q“ ein, soll das Spiel beendet werden. Dazu erweitern wir die Funktion spieler_eingabe() um eine entsprechende if-Abfrage.

# Spieleingabe und Kontrolle der Eingabe
def spieler_eingabe():
    while True:
        spielzug = input("Bitte Feld eingeben: ")
        # vorzeitiges Spielende durch Spieler
        if spielzug == 'q':
            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")

Allerdings passt da nicht viel, da unser Spiel bisher sowieso nach einer Eingabe beendet wird. Wir benötigen also eine Schleife, die entweder am Spielende oder durch den Spieler beendet wird.

Hauptroutine notwendig

Diese Schleife ist eigentlich das Hauptprogramm und umfasst später alle Aktion wie

  • Spielfeld ausgeben
  • Spielereingabe aktivieren
  • Kontrolle, ob eine Partei die Partie gewonnen hat
  • Kontrolle, ob ein Unentschieden vorliegt
  • Wechsel des aktuellen Spielers
  • Kontrolle, ob das Spiel vorzeitig beendet werden soll

Unsere bisherigen 2 Funktionsaufrufe für „Spielfeld zeichnen“ und „Spielerzug abfragen“ packen wir in diese Schleife:

while spiel_aktiv:
    # aktuelles Spielfeld ausgeben
    spielfeld_ausgeben()
    # Eingabe des aktiven Spielers
    spielzug = spieler_eingabe()
    print("Spielzug: " + str(spielzug))

Das Spiel läuft so lange, solange die Variable spiel_aktiv den Wert True enthält.

Starten wir das Spiel nun, erhalten wir eine Fehlermeldung mit der Ausgabe „NameError: name spiel_aktiv“ ist nicht definiert.

Für den guten Stil aktivieren wir alle benötigen Variablen am Anfang von unserem Programm als ersten Schritt:

# Spiel Tic-Tac-Toe
print("Tic-Tac-Toe Python Tutorial")

spiel_aktiv = True

Und die am Anfang gesetzte Variable spiel_aktiv setzen wir auf False, wenn der Spieler das Spiel vorzeitig durch q beendet. Wichtig ist, dass wir am Anfang der Funktion die verwendete Variable spiel_aktiv auf global setzen.

# 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

Weiterempfehlen • Social Bookmarks • Vielen Dank

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Das neue E-Book zum Kurs gibt es zum Kaufen.

Sie können uns auch eine Spende über PayPal zukommen lassen.

Bestellen Sie Bücher über folgenden Link bei Amazon:
Bücher über Python

Vielen Dank für Ihre Unterstützung