Lassen Sie uns ein einfaches Tic Tac Toe-Spiel in Python erstellen. Das wird Ihnen helfen, die Spiellogik aufzubauen und zu verstehen, wie man Code strukturiert.
Spiele gehören zu den Unterhaltungsmöglichkeiten, die Menschen haben. Wir können verschiedene Arten von Spielen im Internet, auf dem Handy, auf dem Desktop usw. finden. Wir sind jetzt nicht hier, um eines dieser schweren Spiele zu entwickeln. Wir werden ein CLI-Tic-Tac-Toe-Spiel mit Python erstellen.
Wenn Sie mit Tic Tac Toe nicht vertraut sind, können Sie es hier visuell spielen, um es zu verstehen. Keine Sorge, auch wenn Sie es nicht verstehen, werden wir es uns ansehen.
Tic Tac Toe
Das Tutorial ist in drei verschiedene Abschnitte unterteilt. Im ersten Abschnitt erfahren Sie, wie man das Tic-Tac-Toe-Spiel spielt. Danach werden wir einen Algorithmus sehen, der uns hilft, die Spiellogik zu entwickeln. Schließlich sehen wir den strukturierten Code und seine Erklärung.
Sie können den ersten Abschnitt überspringen, wenn Sie bereits wissen, wie man Tic Tac Toe spielt.
Lassen Sie uns also ohne Umschweife in unseren ersten Abschnitt eintauchen.
Tic Tac Toe spielen
An einem Spiel nehmen zwei Spieler teil. Zwei Zeichen stehen für jeden Spieler. Die allgemeinen Zeichen, die im Spiel verwendet werden, sind X und O. Schließlich gibt es ein Spielbrett mit 9 Feldern .
Sehen Sie sich das Tic-Tac-Toe-Brett visuell an.
Der Spielablauf ist wie folgt.
- Zunächst platziert ein Benutzer sein Zeichen in einem der verfügbaren leeren Felder.
- Danach setzt der zweite Spieler sein Zeichen in eines der leeren Felder.
- Das Ziel der Spieler ist es, ihre jeweiligen Zeichen vollständig reihenweise, spaltenweise oder diagonal zu platzieren.
- Das Spiel geht so lange weiter, bis ein Spieler das Spiel gewinnt oder es unentschieden ausgeht, weil alle Kästchen gefüllt sind, ohne dass ein Spieler gewinnt.
Sehen wir uns einige Spielverläufe visuell an.
Im obigen Spielverlauf gewinnt der Spieler X das Spiel. Alle Felder füllen sich diagonal mit X-Zeichen . Der entsprechende Spieler gewinnt also das Spiel.
Es gibt insgesamt 8 Möglichkeiten, das gleiche Zeichen anzuordnen und das Spiel zu gewinnen. Schauen wir uns alle 8 Anordnungen an, mit denen Sie das Spiel gewinnen können.
Und schließlich füllt ein Unentschieden das Brett, ohne dass es eine Gewinnanordnung gibt. Ich hoffe, Sie haben jetzt verstanden, wie man Tic Tac Toe spielt.
Jetzt ist es Zeit für Sie zu spielen. Sie können es hier spielen, um den Spielablauf vollständig zu verstehen. Lassen Sie es, wenn Sie es bereits verstanden haben.
Jetzt ist es an der Zeit, zum Abschnitt über den Algorithmus überzugehen.
Algorithmus
Wir werden nun den Algorithmus zum Schreiben des Codes besprechen. Dieser Algorithmus wird Ihnen helfen, den Code in einer beliebigen Programmiersprache Ihrer Wahl zu schreiben. Schauen wir uns an, wie er funktioniert.
- Erstellen Sie ein Board mit einem 2-dimensionalen Array und initialisieren Sie jedes Element als leer.
- Sie können leer durch jedes beliebige Symbol darstellen. Hier werden wir einen Bindestrich verwenden.
'-'
.
- Sie können leer durch jedes beliebige Symbol darstellen. Hier werden wir einen Bindestrich verwenden.
- Schreiben Sie eine Funktion, die prüft, ob das Feld gefüllt ist oder nicht.
- Iterieren Sie über die Tafel und geben Sie
false
zurück, wenn die Tafel ein leeres Zeichen enthält, oder geben Sie sonsttrue
zurück.
- Iterieren Sie über die Tafel und geben Sie
- Schreiben Sie eine Funktion, die prüft, ob ein Spieler gewonnen hat oder nicht.
- Wir müssen alle Möglichkeiten prüfen, die wir im vorherigen Abschnitt besprochen haben.
- Prüfen Sie für alle Zeilen, Spalten und zwei Diagonalen.
- Schreiben Sie eine Funktion zum Anzeigen des Spielbretts, denn wir werden das Spielbrett während des Spiels mehrfach anzeigen.
- Schreiben Sie eine Funktion, um das Spiel zu starten.
- Wählen Sie den ersten Zug des Spielers zufällig aus.
- Schreiben Sie eine Endlosschleife, die abbricht, wenn das Spiel zu Ende ist (entweder Sieg oder Unentschieden).
- Zeigen Sie dem Benutzer das Spielbrett, um den Ort für den nächsten Zug auszuwählen.
- Bitten Sie den Benutzer, die Zeilen- und Spaltennummer einzugeben.
- Aktualisieren Sie den Platz mit dem entsprechenden Spielerzeichen.
- Prüfen Sie, ob der aktuelle Spieler das Spiel gewonnen hat oder nicht.
- Wenn der aktuelle Spieler das Spiel gewonnen hat, geben Sie eine Siegermeldung aus und unterbrechen die Endlosschleife.
- Prüfen Sie als nächstes, ob das Spielbrett gefüllt ist oder nicht.
- Wenn das Spielbrett gefüllt ist, drucken Sie die Ziehungsnachricht und unterbrechen die Endlosschleife.
- Zeigen Sie dem Benutzer schließlich die endgültige Ansicht des Spielbretts.
Vielleicht können Sie sich vorstellen, was passiert. Machen Sie sich keine Sorgen, auch wenn Sie es nicht ganz verstanden haben. Sie werden mehr Klarheit bekommen, wenn Sie den Code sehen.
Lassen Sie uns also mit dem Code beginnen. Ich gehe davon aus, dass Sie Python auf Ihrem PC installiert haben, um den Code auszuprobieren.
Code
Gehen Sie den folgenden Code durch.
importieren Sie random
class TicTacToe:
def __init__(self):
self.board = []
def create_board(self):
for i in range(3):
row = []
for j in range(3):
row.append('-')
self.board.append(Zeile)
def get_random_first_player(self):
return random.randint(0, 1)
def fix_spot(self, row, col, player):
self.board[row][col] = Spieler
def is_player_win(self, spieler):
win = None
n = len(self.board)
# Zeilen prüfen
for i in range(n):
win = True
for j in range(n):
if self.board<x><x><x><x><x><x><x><x>[i]</x></x></x></x></x></x></x></x><x><x>[j]</x></x>!= player:
win = False
break
wenn win:
return win
# Spalten prüfen
for i in Bereich(n):
win = True
for j in range(n):
if self.board<x><x>[j]</x></x><x><x><x><x><x><x><x><x>[i]</x></x></x></x></x></x></x></x>!= player:
win = False
break
wenn win:
return win
# Diagonalen prüfen
win = Wahr
for i in range(n):
if self.board<x><x><x><x><x><x><x><x>[i]</x></x></x></x></x></x></x></x><x><x><x><x><x><x><x><x>[i]</x></x></x></x></x></x></x></x>!= Spieler:
win = False
break
wenn win:
return win
win = Wahr
for i in range(n):
if self.board<x><x><x><x><x><x><x><x>[i]</x></x></x></x></x></x></x></x>[n - 1 - i] != Spieler:
win = False
break
wenn Sieg:
return win
return False
for row in self.board:
for item in row:
if item == '-':
return False
return True
def is_board_filled(self):
for row in self.board:
for item in row:
if item == '-':
return False
return True
def swap_player_turn(self, spieler):
return 'X' if spieler == 'O' else 'O'
def show_board(self):
for row in self.board:
for item in row:
print(item, end=" ")
print()
def start(self):
self.create_board()
spieler = 'X' if self.get_random_first_player() == 1 else 'O'
while True:
print(f "Spieler {player} ist dran")
self.show_board()
# Benutzereingaben entgegennehmen
row, col = list(
map(int, input("Geben Sie Zeilen- und Spaltennummern ein, um die Stelle zu fixieren: ").split()))
print()
# Fixieren der Stelle
self.fix_spot(Zeile - 1, Spalte - 1, Spieler)
# Prüfen, ob der aktuelle Spieler gewonnen hat oder nicht
if self.is_player_win(player):
print(f "Spieler {player} gewinnt das Spiel!")
break
# Prüfen, ob das Spiel unentschieden ist oder nicht
if self.is_board_filled():
print("Spiel Unentschieden!")
break
# Tauschen Sie den Zug
player = self.swap_player_turn(spieler)
# Anzeige der endgültigen Ansicht des Spielbretts
print()
self.show_board()
# das Spiel starten
tic_tac_toe = TicTacToe()
tic_tac_toe.start()
Sehen Sie sich die Beispielausgabe des Codes an.
$ python tic_tac_toe.py
Spieler X ist dran
- - -
- - -
- - -
Geben Sie die Zeilen- und Spaltennummern ein, um die Stelle zu fixieren: 1 1
Spieler O ist am Zug
X - -
- - -
- - -
Geben Sie die Zeilen- und Spaltennummern ein, um die Stelle zu fixieren: 2 1
Spieler X ist am Zug
X - -
O - -
- - -
Geben Sie die Zeilen- und Spaltennummern ein, um den Platz zu fixieren: 1 2
Spieler O ist dran
X X -
O - -
- - -
Geben Sie die Zeilen- und Spaltennummern ein, um den Platz zu fixieren: 1 3
Spieler X ist am Zug
X X O
O - -
- - -
Geben Sie die Zeilen- und Spaltennummern ein, um den Platz zu fixieren: 2 2
Spieler O ist dran
X X O
O X -
- - -
Geben Sie die Zeilen- und Spaltennummern ein, um die Stelle zu fixieren: 3 3
Spieler X ist dran
X X O
O X -
- - O
Geben Sie die Zeilen- und Spaltennummern ein, um den Platz zu fixieren: 3 2
Spieler X gewinnt das Spiel!
X X O
O X -
- X O
Einige wichtige Punkte, die Ihnen helfen, die Struktur des Codes zu verstehen.
- Wir haben eine Klasse verwendet, um alle Methoden an einem Ort zu haben. Sie kann leicht als wiederverwendbares Bündel auch in anderem Code verwendet werden.
- Als nächstes haben wir verschiedene Funktionen für jede Aufgabe definiert, auch wenn es sich nur um eine kleine Aufgabe handelt. Das macht die Pflege des Codes einfacher.
- Die beiden oben genannten Ansätze helfen uns, die App mühelos zu aktualisieren, wenn wir das Spiel aktualisieren wollen.
Fühlen Sie sich frei, die Struktur anzupassen und sie auf der Grundlage Ihres Projekts zu verbessern. Die Strukturierung des Codes ist nicht begrenzt.
Letzte Worte
Hurra! 😎 Sie haben ein Spiel von Grund auf neu erstellt. Es ist keins der visuellen Spiele, die wir täglich spielen. Aber es hilft Ihnen, Logik zu schreiben und eine saubere Struktur im Code zu erhalten. Folgen Sie ähnlichen Richtlinien, um einige interessante Spiele wie dieses zu erstellen. Sie können ähnliche Spiele finden, wenn Sie einige Jahre in Ihre Kindheit zurückgehen.
Viel Spaß beim Codieren! 👩💻
Als Nächstes erfahren Sie, wie Sie ein Zahlen-Ratespiel erstellen und Unit-Tests mit dem Python unittest Modul durchführen.