Heim >Backend-Entwicklung >Python-Tutorial >Erstellen Sie ein einfaches Tic-Tac-Toe-Spiel in Python
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
. True
zurück. False
turn = "X" map = [[" "," "," "], [" "," "," "], [" "," "," "]] done = FalseIch habe Ihnen bereits erklärt, was diese drei Variablen bedeuten. Wenn Sie es vergessen haben, schauen Sie unten nach:
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
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" printWeiter:
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 -=1Haha, 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 >
……
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!):
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, "'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!