Wie erstelle ich ein Tic-Tac-Toe-Spiel in Python?

Lassen Sie uns ein einfaches Tic Tac Toe-Spiel in Python erstellen. Es wird Ihnen helfen, Spiellogik aufzubauen und zu verstehen, wie Code strukturiert wird.

Gaming ist eine der Unterhaltungen, die Menschen haben. Wir können verschiedene Arten von Spielen im Internet, auf Mobilgeräten, 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, spielen Sie es visuell hier verstehen. Keine Sorge, auch wenn Sie es nicht verstehen, wir werden es sehen.

Tic-Tac-Toe

Das Tutorial ist in drei verschiedene Abschnitte unterteilt. Im ersten Abschnitt lernen Sie, wie man das Tic-Tac-Toe-Spiel spielt. Danach sehen wir einen Algorithmus, 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 weiteres in unseren ersten Abschnitt eintauchen.

Tic Tac Toe spielen

Es werden zwei Spieler in einem Spiel sein. Zwei Zeichen repräsentieren jeden Spieler. Die im Spiel verwendeten allgemeinen Zeichen sind X und O. Schließlich wird es ein Brett mit 9 Feldern geben.

Sehen Sie das Tic-Tac-Toe-Board visuell.

Tic Tac Toe-Brett

Das Gameplay wird wie folgt sein.

  • Zunächst platziert ein Benutzer sein Zeichen in einem der verfügbaren leeren Kästchen.
  • Als nächstes platziert der zweite Benutzer sein Zeichen in einem der verfügbaren leeren Kästchen.
  • Ziel der Spieler ist es, ihre jeweiligen Schilder komplett reihen- oder spaltenweise oder diagonal zu platzieren.
  • Das Spiel geht weiter, bis ein Spieler das Spiel gewinnt oder es unentschieden endet, indem er alle Kästchen ohne Gewinnspiel ausfüllt.

Sehen wir uns einige Gameplays visuell an.

Tic Tac Toe Win Gameplay

Der Spieler X gewinnt das Spiel im obigen Gameplay. Alle Kästchen füllen sich diagonal mit X-Zeichen. Der jeweilige Spieler gewinnt also das Spiel.

Es gibt insgesamt 8 Möglichkeiten, das gleiche Zeichen zu arrangieren und das Spiel zu gewinnen. Sehen wir uns alle 8 Arrangements an, die das Spiel gewinnen können.

  So entfernen Sie Wasserzeichen in Microsoft Word

Tic Tac Toe Gewinnarrangements

Und schließlich füllt ein Unentschieden das Brett ohne Gewinnvereinbarung. Ich hoffe, du verstehst jetzt, wie man Tic Tac Toe macht.

Jetzt ist Spielzeit für dich. Du darfst gehen hier und spiele es, um das Gameplay vollständig zu verstehen. Lassen Sie es, wenn Sie es bereits haben.

Jetzt ist es an der Zeit, den Algorithmusabschnitt zu verschieben.

Algorithmus

Wir werden nun den Algorithmus zum Schreiben des Codes besprechen. Dieser Algorithmus hilft Ihnen, Code in jeder Programmiersprache Ihrer Wahl zu schreiben. Mal sehen, wie es gemacht wird.

  • Erstellen Sie ein Board mit einem zweidimensionalen Array und initialisieren Sie jedes Element als leer.
    • Sie können leer mit einem beliebigen Symbol darstellen. Hier verwenden wir einen Bindestrich. ‚-‚.
  • Schreiben Sie eine Funktion, um zu prüfen, ob das Board gefüllt ist oder nicht.
    • Iterieren Sie über das Board und geben Sie false zurück, wenn das Board ein Leerzeichen enthält, oder geben Sie andernfalls true zurück.
  • Schreiben Sie eine Funktion, um zu überprüfen, ob ein Spieler gewonnen hat oder nicht.
    • Wir müssen alle Möglichkeiten prüfen, die wir im vorherigen Abschnitt besprochen haben.
    • Überprüfen Sie alle Zeilen, Spalten und zwei Diagonalen.
  • Schreiben Sie eine Funktion, um das Board anzuzeigen, da wir das Board den Benutzern mehrmals zeigen werden, während sie spielen.
  • 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 unterbrochen wird, wenn das Spiel vorbei ist (entweder Sieg oder Unentschieden).
      • Zeigen Sie dem Benutzer das Brett, um den Punkt für den nächsten Zug auszuwählen.
      • Bitten Sie den Benutzer, die Zeilen- und Spaltennummer einzugeben.
      • Aktualisieren Sie den Spot mit dem entsprechenden Spielerzeichen.
      • Überprüfen Sie, ob der aktuelle Spieler das Spiel gewonnen hat oder nicht.
      • Wenn der aktuelle Spieler das Spiel gewonnen hat, drucken Sie eine Gewinnnachricht aus und unterbrechen Sie die Endlosschleife.
      • Überprüfen Sie als Nächstes, ob das Board gefüllt ist oder nicht.
      • Wenn das Brett gefüllt ist, drucken Sie die Ziehungsnachricht aus und unterbrechen Sie die Endlosschleife.
    • Zeigen Sie dem Benutzer schließlich die endgültige Ansicht des Boards.
  Alles, was Sie wissen müssen

Vielleicht kannst du dir vorstellen, was passiert. Machen Sie sich keine Sorgen, auch wenn Sie es nicht vollständig verstanden haben. Sie erhalten mehr Klarheit, wenn Sie den Code sehen.

Lassen Sie uns also in den Codeabschnitt springen. Ich nehme an, Sie haben Python auf Ihrem PC installiert, um den Code auszuprobieren.

Code

Gehen Sie den folgenden 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[i][j] != player:
                    win = False
                    break
            if win:
                return win

        # checking columns
        for i in range(n):
            win = True
            for j in range(n):
                if self.board[j][i] != player:
                    win = False
                    break
            if win:
                return win

        # checking diagonals
        win = True
        for i in range(n):
            if self.board[i][i] != player:
                win = False
                break
        if win:
            return win

        win = True
        for i in range(n):
            if self.board[i][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"Player {player} turn")

            self.show_board()

            # taking user input
            row, col = list(
                map(int, input("Enter row and column numbers to fix spot: ").split()))
            print()

            # fixing the spot
            self.fix_spot(row - 1, col - 1, player)

            # checking whether current player is won or not
            if self.is_player_win(player):
                print(f"Player {player} wins the game!")
                break

            # checking whether the game is draw or not
            if self.is_board_filled():
                print("Match Draw!")
                break

            # swapping the turn
            player = self.swap_player_turn(player)

        # showing the final view of board
        print()
        self.show_board()


# starting the game
tic_tac_toe = TicTacToe()
tic_tac_toe.start()

Sehen Sie sich die Beispielausgabe des Codes an.

$ python tic_tac_toe.py 
Player X turn
- - -
- - -
- - -
Enter row and column numbers to fix spot: 1 1

Player O turn
X - -
- - -
- - -
Enter row and column numbers to fix spot: 2 1

Player X turn
X - -
O - -
- - -
Enter row and column numbers to fix spot: 1 2

Player O turn
X X -
O - -
- - -
Enter row and column numbers to fix spot: 1 3

Player X turn
X X O
O - -
- - -
Enter row and column numbers to fix spot: 2 2

Player O turn
X X O
O X -
- - -
Enter row and column numbers to fix spot: 3 3

Player X turn
X X O        
O X -        
- - O
Enter row and column numbers to fix spot: 3 2

Player X wins the game!

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. Es kann auch leicht ein wiederverwendbares Bundle in einem anderen Code sein.
  • Als nächstes haben wir verschiedene Funktionen für jede Verantwortung definiert, auch wenn es sich um eine kleine Aufgabe handelt. Es hilft, den Code mit Leichtigkeit zu pflegen.
  • Die beiden oben genannten Ansätze helfen uns, die App mühelos zu aktualisieren, wenn wir das Spiel aktualisieren möchten.
  Wie Sie Ihren Controller dazu bringen, einen Xbox-Controller zu emulieren

Fühlen Sie sich frei, die Struktur anzupassen und basierend auf Ihrem Projekt zu verbessern. Der Strukturierung des Codes sind keine Grenzen gesetzt.

Letzte Worte

Hurra! 😎 Du hast ein Spiel komplett neu erstellt. Es ist nicht eines der visuellen Spiele, die wir täglich spielen. Aber es hilft Ihnen, Logik zu schreiben und eine saubere Struktur im Code beizubehalten. 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! 👩‍💻

Erkunden Sie als Nächstes, wie Sie mit dem Python-Unittest-Modul ein Zahlenratespiel und Unit-Tests erstellen.

Haben Sie den Artikel gerne gelesen? Wie wäre es mit dem Teilen mit der Welt?

x