Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Entwicklung Zuletzt aktualisiert: September 23, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

Lassen Sie uns ein einfaches Tic Tac Toe-Spiel in Python erstellen. Es 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 auch 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 noch ein Spielbrett mit 9 Feldern

Sehen Sie sich das Tic-Tac-Toe-Brett visuell an

Tic Tac Toe Brett
Tic Tac Toe Brett

Das Spiel läuft wie folgt ab

  • 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

Tic Tac Toe Win Gameplay
Tic Tac Toe Win Gameplay

Im obigen Spielverlauf gewinnt der Spieler X das Spiel. Alle Felder füllen sich diagonal mit X-Zeichen . Der entsprechende Spieler gewinnt auch das Spiel

Es gibt insgesamt 8 Möglichkeiten, das gleiche Zeichen anzuordnen und das Spiel zu gewinnen. Sehen wir uns alle 8 Anordnungen an, mit denen man das Spiel gewinnen kann

Tic Tac Toe Gewinnende Arrangements
Tic Tac Toe Gewinnende Anordnungen

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 nachspielen, 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 Ihre 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. '-'.
  • Schreiben Sie eine Funktion, die prüft, ob das Board 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 andernfalls true zurück.
  • 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 alle Zeilen, Spalten und zwei Diagonalen.
  • Schreiben Sie eine Funktion zum Anzeigen des Spielbretts, da wir den Benutzern das Brett während des Spiels mehrmals zeigen werden.
  • 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 ist. 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 auch mit dem Code beginnen. Ich gehe davon aus, dass Sie Python auf Ihrem PC installiert haben, um den Code auszuprobieren

Code

Gehen Sie den unten stehenden Code durch

import 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(row)

 def get_random_first_player(self):
 return random.randint(0, 1)

 def fix_spot(self, row, col, player):
 self.board[row][col] = player

 def is_player_win(self, player):
 win = None

 n = len(self.board)

 # checking rows
 for i in range(n):
 win = True
 for j in range(n):
 if self.board<x><x><x><x>[i]</x></x></x></x><x>[j]</x>!= Spieler:
 win = False
 break
 if win:
 return win

 # Überprüfung der Spalten
 for i in range(n):
 win = True
 for j in range(n):
 if self.board<x>[j]</x><x><x><x><x>[i]</x></x></x></x>!= Spieler:
 win = False
 break
 if win:
 return win

 # Überprüfung der Diagonalen
 win = True
 for i in range(n):
 if self.board<x><x><x><x>[i]</x></x></x></x><x><x><x><x>[i]</x></x></x></x>!= player:
 win = False
 break
 if win:
 return win

 win = True
 for i in range(n):
 if self.board<x><x><x><x>[i]</x></x></x></x>[n - 1 - i] != player:
 win = False
 break
 if win:
 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, player):
 return 'X' if player == '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()

 player = 'X' if self.get_random_first_player() == 1 else 'O'
 while True:
 print(f "Spieler {player} turn")

 self.show_board()

 # Benutzereingabe
 row, col = list(
 map(int, input("Geben Sie Zeilen- und Spaltennummern ein, um den Spot zu fixieren: ").split()))
 print()

 # Fixierung des Spots
 self.fix_spot(row - 1, col - 1, player)

 # Überprüfung, 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 des Zuges
 player = self.swap_player_turn(player)

 # Anzeige der endgültigen Ansicht des Spielbretts
 print()
 self.show_board()


#

Starten des Spiels

tic_tac_toe

= TicTacToe()

tic_tac_toe

.start()

Sehen Sie sich die Beispielausgabe des Codes an

$ python tic_tac_toe.py
Spieler X ist am Zug
- - -
- - -
- - -
Geben Sie die Zeilen- und Spaltennummern ein, um den Punkt zu fixieren: 1 1

Spieler O ist am Zug
X - -
- - -
- -
Geben Sie die Zeilen- und Spaltennummern ein, um den Punkt zu fixieren: 2 1

Spieler X ist an der Reihe
X - -
O - -
- - -
Geben Sie die Zeilen- und Spaltennummern ein, um den Spot zu fixieren: 1 2

Spieler O ist an der Reihe
X X -
O - -
- -
Geben Sie die Zeilen- und Spaltennummern ein, um den Spot zu fixieren: 1 3

Spieler X ist an der Reihe
X X O
O - -
- - -
Geben Sie die Zeilen- und Spaltennummern ein, um den Spot zu fixieren: 2 2

Spieler O ist an der Reihe
X X O
O X -
- -
Geben Sie die Zeilen- und Spaltennummern ein, um den Spot zu fixieren: 3 3

Spieler X ist an der Reihe
X X O
O X -
- - O
Geben Sie die Zeilen- und Spaltennummern ein, um den Spot 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. Befolgen Sie ähnliche 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.

  • Hafeezul Kareem Shaik
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zum Thema Entwicklung
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder