Heim >Backend-Entwicklung >Python-Tutorial >Erstellen Sie ein einfaches Tic-Tac-Toe-Spiel in Python

Erstellen Sie ein einfaches Tic-Tac-Toe-Spiel in Python

巴扎黑
巴扎黑Original
2017-04-05 14:53:581744Durchsuche

In diesem Tutorial zeige ich Ihnen, wie Sie mit Python ein Tic-Tac-Toe-Spiel erstellen. Dazu gehören Funktionen, Listen, if-Anweisungen, while-Schleifen, for-Schleifen, Fehlerbehandlung und mehr.

Zuerst erstellen wir zwei Funktionen. Die erste Funktion druckt die Hintergrundvorlage des Tic-Tac-Toe-Spiels aus:

def print_board():
    for i in range(0,3):
        for j in range(0,3):
            print map[2-i][j],
            if j != 2:
                print "|",
        print ""

Hier verwenden wir zwei for-Schleifen, um eine Listenvariable namens map zu durchlaufen. Diese Variable ist eine zweidimensionale Liste, die Informationen für jeden Standort enthält.

Da ich die Positionen anhand der Zahlen auf dem Tastenfeld vergleichen werde (wie Sie später sehen werden), setzen wir den ersten Wert auf (2-i) und möchten dann "|" verwenden, um unsere Positionen zu dividieren, also nach jeder Position gedruckt wird, drucken wir dafür ein "|". Wir verwenden hier Kommas print map[2-i][j],, um sicherzustellen, dass sie in derselben Zeile gedruckt werden.

Jetzt kann diese Funktion den Hintergrund eines Spiels drucken. Er sieht so aus:

  |   |   
  |   |   
  |   |
X | X |   
O | X | O 
  | O | X
X | X | X 
X | X | X 
X | X | X

Als nächstes erstellen wir eine check_done()-Funktion, die nach jeder Runde prüft, ob das Spiel vorbei ist. Wenn das Spiel vorbei ist, geben wir True zurück und geben eine Nachricht aus.

def check_done():
    for i in range(0,3):
        if map[i][0] == map[i][1] == map[i][2] != " " \
        or map[0][i] == map[1][i] == map[2][i] != " ":
            print turn, "won!!!"
            return True

    if map[0][0] == map[1][1] == map[2][2] != " " \
    or map[0][2] == map[1][1] == map[2][0] != " ":
        print turn, "won!!!"
        return True

    if " " not in map[0] and " " not in map[1] and " " not in map[2]:
        print "Draw"
        return True

    return False

Zuerst prüfen wir, ob es drei Zeilen in horizontaler und vertikaler Richtung gibt, die gleich und nicht leer sind (damit er drei aufeinanderfolgende leere Zeilen nicht als geeignet betrachtet). Zweitens überprüfen wir die diagonalen Zeilen auf die gleiche Weise.

Wenn eine dieser 8 Zeilen die Bedingungen erfüllt, wird das Spiel beendet und „Gewonnen!!!“ zurückgegeben. Achten Sie gleichzeitig auf die Variable True um festzustellen, welche Seite gerade Schach spielt, und um sie schließlich anzuzeigen. Die ausgegebene Meldung lautet „X hat gewonnen!!“ oder „O hat gewonnen!!“. turn

Als nächstes beurteilt diese Funktion, dass, wenn keine Position leer ist, niemand das Spiel gewinnen kann (früher beurteilt), dann wird ein Unentschieden ausgedruckt und zurückgegeben

. True

Wenn keine der beiden oben genannten Situationen vorliegt, ist das Spiel noch nicht vorbei und Sie kehren zu

zurück. False

OK, jetzt haben wir zwei Funktionen. Beginnen wir mit unserem eigentlichen Programm. Erstellen Sie zunächst drei Variablen:

turn = "X"
map = [[" "," "," "],
       [" "," "," "],
       [" "," "," "]]
done = False
Ich habe Ihnen bereits erklärt, was diese drei Variablen bedeuten. Wenn Sie es vergessen haben, schauen Sie unten nach:

  • Wende: Wer soll gehen


  • Karte: Die Hintergrundkarte des Spiels


  • erledigt: Ist das Spiel vorbei?

Als nächstes schreiben Sie so:

while done != True:
    print_board()

    print turn, "'s turn"
    print

    moved = False
    while moved != True:
Es gibt eine While-Schleife im Inneren, bis done wahr ist, geben wir aus, wer an der Reihe ist.

Erstellen Sie dann eine Variable mit dem Namen

, um zu überprüfen, ob sich der Spieler bewegt hat. Wenn nicht, starten Sie die nächste Schleife. moved

Als nächstes drucken wir aus, wie der Player laufen soll:

print "Please select position by typing in a number between 1 and 9, see below for which number that is which position..."
print "7|8|9"
print "4|5|6"
print "1|2|3"
print
Weiter:

try:
    pos = input("Select: ")
    if pos <=9 and pos >=1:
Wir möchten, dass der Spieler eine Zahl eingibt, und prüfen dann, ob diese zwischen 1 und 9 liegt. Gleichzeitig müssen wir eine Fehlerbehandlung hinzufügen. Wenn der Spieler beispielsweise „Hallo“ eingibt, kann das Programm nicht einfach beendet werden .

Jetzt müssen wir prüfen, ob er diesen Schritt tun kann:

Y = pos/3
X = pos%3
if X != 0:
    X -=1
else:
    X = 2
    Y -=1
Haha, haltet die Augen offen. Wir ermitteln dann den Wert von X und Y und prüfen dann, ob die Position, die er platzieren möchte, leer ist. Als nächstes erkläre ich euch, wie X und Y funktionieren >

    Position 1: Y = 1/3 = 0, X = 1%3 = 1; Position 2: Y = 2/3 = 0, X = 2%3 = 2; Position 3: Y = 3/3 = 1, X = 3%3 = 0
  • ……

  • Sie können unten rechnen, und ich komme gleich zu dem Schluss (Verdammt, die Standardvorlage von Hexo zeigt keine Tabellen an. Als ich sie auf mou bearbeitet habe, war sie viel hübscher als die untenstehende!):

    YX x=0 x=1 x=2 y=2 7 8 9 y=1 4 5 6 y=0 1 2 3

      aha,这个位置和我们键入的是一样的!

    print "7|8|9"
    print "4|5|6"
    print "1|2|3"

      现在我们完成大部分工作了,但是还有几行代码:

    map[Y][X] = turn
    moved = True
    done = check_done()
    
    if done == False:
        if turn == "X":
            turn = "O"
        else:
            turn = "X"
    
    except:
        print "You need to add a numeric value"

      嗯,我们给moved变量复制为True,并检查是否结束了,木有结束的话变换角色换下一个人走。

      OK,差不多结束了,假如你只是想Ctrl+C 和 Ctrl+V的话,下面是全部的代码,希望你学到了点什么,( ^_^ )/~~拜拜。

    def print_board():
        for i in range(0,3):
            for j in range(0,3):
                print map[2-i][j],
                if j != 2:
                    print "|",
            print ""
    
    def check_done():
        for i in range(0,3):
            if map[i][0] == map[i][1] == map[i][2] != " " \
            or map[0][i] == map[1][i] == map[2][i] != " ":
                print turn, "won!!!"
                return True
    
        if map[0][0] == map[1][1] == map[2][2] != " " \
        or map[0][2] == map[1][1] == map[2][0] != " ":
            print turn, "won!!!"
            return True
    
        if " " not in map[0] and " " not in map[1] and " " not in map[2]:
            print "Draw"
            return True
    
        return False
    
    turn = "X"
    map = [[" "," "," "],
           [" "," "," "],
           [" "," "," "]]
    done = False
    
    while done != True:
        print_board()
    
        print turn, "&#39;s turn"
        print
    
        moved = False
        while moved != True:
            print "Please select position by typing in a number between 1 and 9, see below for which number that is which position..."
            print "7|8|9"
            print "4|5|6"
            print "1|2|3"
            print
    
            try:
                pos = input("Select: ")
                if pos <=9 and pos >=1:
                    Y = pos/3
                    X = pos%3
                    if X != 0:
                        X -=1
                    else:
                         X = 2
                         Y -=1
    
                    if map[Y][X] == " ":
                        map[Y][X] = turn
                        moved = True
                        done = check_done()
    
                        if done == False:
                            if turn == "X":
                                turn = "O"
                            else:
                                turn = "X"
    
            except:
                print "You need to add a numeric value"

      原文出处: Vswe

Das obige ist der detaillierte Inhalt vonErstellen Sie ein einfaches Tic-Tac-Toe-Spiel in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn