Cum se creează un joc Tic-Tac-Toe în Python?
Publicat: 2021-08-19Să 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, redați-l vizual aici pentru a înțelege. Nu vă faceți griji, chiar dacă nu înțelegeți, 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.

Modul de joc va fi după cum urmează.
- Mai întâi, 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 să-și plaseze 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 casetele fără un meci câștigător.
Să vedem vizual câteva gameplay-uri.

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.
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.

Ș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. Puteți merge aici și îl jucați 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.
'-'.
- 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.
- Iterează peste tablă și returnează
falsedacă placa conține un semn gol sau returneazătrue.
- Iterează peste tablă și returnează
- 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 aceștia 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ă placa este umplută sau nu.
- Dacă tabla este plină, imprimați mesajul de extragere și întrerupeți bucla infinită.
- În cele din urmă, arătați utilizatorului vizualizarea finală a tablei.
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 XX - O - - - - - Enter row and column numbers to fix spot: 1 3 Player X turn XXO O - - - - - Enter row and column numbers to fix spot: 2 2 Player O turn XXO OX - - - - Enter row and column numbers to fix spot: 3 3 Player X turn XXOOX - - - O Enter row and column numbers to fix spot: 3 2 Player X wins the game! XXO OX - - XOCâ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.
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.
