Cum se creează un joc Tic-Tac-Toe în Python?

Să creăm un joc simplu Tic Tac Toe în Python. Vă va ajuta să construiți logica jocului și să înțelegeți cum să structurați codul.

Jocurile sunt unul dintre divertismentul pe care îl au oamenii. Putem găsi diferite tipuri de jocuri pe web, mobil, desktop, etc. Nu suntem aici pentru a face unul dintre acele jocuri grele acum. Vom crea un joc CLI tic-tac-toe folosind Python.

Dacă nu sunteți familiarizat cu Tic Tac Toe, jucați-l vizual Aici a întelege. Nu-ți face griji, chiar dacă nu înțelegi, o vom vedea.

Tic Tac Toe

Tutorialul este împărțit în trei secțiuni diferite. În prima secțiune, vei afla cum să joci jocul tic-tac-toe. După aceea, vom vedea un algoritm care ne ajută să venim cu logica jocului. În cele din urmă, vom vedea codul structurat și explicația acestuia.

Puteți sări peste prima secțiune dacă știți deja să jucați Tic Tac Toe.

Așa că, fără alte prelungiri, să ne aruncăm în prima noastră secțiune.

Jucând Tic Tac Toe

Vor fi doi jucători într-un joc. Două semne reprezintă fiecare jucător. Semnele generale folosite în joc sunt X și O. În cele din urmă, va exista o tablă cu 9 cutii.

Vedeți vizual panoul tic-tac-toe.

Placă Tic Tac Toe

Modul de joc va fi după cum urmează.

  • În primul rând, un utilizator își va plasa semnul într-una dintre casetele goale disponibile.
  • Apoi, al doilea utilizator își va plasa semnul într-una dintre casetele goale disponibile.
  • Scopul jucătorilor este de a-și plasa semnele respective complet în rânduri sau coloane sau în diagonală.
  • Jocul continuă până când un jucător câștigă jocul sau a ajuns la egalitate umplând toate căsuțele fără un meci câștigător.

Să vedem câteva gameplay-uri vizual.

Gameplay Tic Tac Toe Win

Jucătorul X câștigă jocul în jocul de mai sus. Toate casetele se umplu în diagonală cu semne X. Deci, jucătorul respectiv câștigă jocul.

  16 Cea mai bună aplicație privată de vizualizare a Instagramului fără verificare umană

Există un total de 8 moduri de a aranja același semn și de a câștiga jocul. Să vedem toate cele 8 aranjamente care pot câștiga jocul.

Aranjamentele câștigătoare Tic Tac Toe

Și în cele din urmă, o remiză umple tabla fără niciun aranjament câștigător. Sper că înțelegi cum să faci Tic Tac Toe acum.

Acum, este timpul de joacă pentru tine. Poți pleca Aici și joacă-l pentru a înțelege modul de joc complet. Lasă-l dacă îl ai deja.

Acum, este timpul să mutați secțiunea de algoritm.

Algoritm

Vom discuta acum despre algoritmul de scriere a codului. Acest algoritm vă va ajuta să scrieți cod în orice limbaj de programare la alegere. Să vedem cum se face.

  • Creați o placă folosind o matrice bidimensională și inițializați fiecare element ca gol.
    • Puteți reprezenta gol folosind orice simbol doriți. Aici, vom folosi o cratima. ‘-‘.
  • Scrieți o funcție pentru a verifica dacă tabla este umplută sau nu.
    • Iterați peste tablă și returnați false dacă placa conține un semn gol sau returnați adevărat.
  • Scrieți o funcție pentru a verifica dacă un jucător a câștigat sau nu.
    • Trebuie să verificăm toate posibilitățile pe care le-am discutat în secțiunea anterioară.
    • Verificați toate rândurile, coloanele și două diagonale.
  • Scrieți o funcție pentru a afișa tabla, deoarece vom arăta tabla de mai multe ori utilizatorilor în timp ce se joacă.
  • Scrieți o funcție pentru a începe jocul.
    • Selectați prima tură a jucătorului la întâmplare.
    • Scrieți o buclă infinită care se întrerupe când jocul se termină (fie câștig, fie egal).
      • Arată-i utilizatorului panoul pentru a selecta locul pentru următoarea mișcare.
      • Cereți utilizatorului să introducă numărul rândului și al coloanei.
      • Actualizați spotul cu semnul jucătorului respectiv.
      • Verificați dacă jucătorul actual a câștigat jocul sau nu.
      • Dacă jucătorul actual a câștigat jocul, imprimați un mesaj câștigător și întrerupeți bucla infinită.
      • Apoi, verificați dacă tabla este umplută sau nu.
      • Dacă tabla este umplută, imprimați mesajul de extragere și întrerupeți bucla infinită.
    • În cele din urmă, arătați utilizatorului vizualizarea finală a tablei.
  10 cele mai bune programe software pentru un progres eficient

Este posibil să puteți vizualiza ce se întâmplă. Nu-ți face griji, chiar dacă nu ai înțeles complet. Veți obține mai multă claritate odată ce vedeți codul.

Deci, să trecem la secțiunea de cod. Presupun că aveți Python instalat pe computer pentru a încerca codul.

Cod

Parcurgeți codul de mai jos.

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

Consultați exemplul de ieșire a codului.

$ 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

Câteva puncte majore care vă ajută să înțelegeți structura codului.

  • Am folosit o clasă pentru a avea toate metodele într-un singur loc. Poate fi cu ușurință un pachet reutilizabil și în alt cod.
  • În continuare, am definit diferite funcții pentru fiecare responsabilitate, chiar dacă este o sarcină mică. Ajută la menținerea codului cu ușurință.
  • Cele două abordări de mai sus ne ajută să actualizăm aplicația fără efort dacă dorim să actualizăm jocul.
  Cât de rapid este Kinsta WordPress Hosting (rezultatele testelor)?

Simțiți-vă liber să adaptați structura și să o îmbunătățiți în funcție de proiectul dvs. Structurarea codului nu este limitată.

Cuvinte finale

Ura! 😎 Ai creat un joc complet de la zero. Nu este unul dintre jocurile vizuale pe care le jucăm zilnic. Dar vă ajută să scrieți logica și să mențineți o structură curată în cod. Urmați instrucțiuni similare pentru a crea câteva jocuri interesante ca acesta. Puteți găsi jocuri similare dacă vă întoarceți cu câțiva ani în copilărie.

Codare fericită! 👩‍💻

Apoi, explorați cum să creați un joc de ghicire a numerelor și testarea unitară cu modulul Python unittest.

Ți-a plăcut să citești articolul? Ce zici de împărtășirea cu lumea?