Come realizzare un gioco Tic Tac Toe in Python con Code Esempio

โšก Riepilogo intelligente

Tic Tac Toe dentro Python Si tratta di un progetto adatto ai principianti che ricrea il classico gioco a griglia per due giocatori. Realizzarlo rafforza competenze fondamentali come cicli, istruzioni condizionali, liste, funzioni e ricorsione, mentre si controllano righe, colonne e diagonali per individuare il vincitore.

  • ๐ŸŽฎ Gameplay: Due giocatori segnano con una X e una O su una griglia quadrata finchรฉ uno dei due non completa una riga, una colonna o una diagonale.
  • ๐Ÿงฉ Logica di base: Le liste annidate memorizzano la scacchiera, mentre i cicli e le condizioni gestiscono i turni e rilevano la vittoria o il pareggio.
  • ???? ๏ธ Passaggi di costruzione: Crea la scacchiera, scegli il primo giocatore, raccogli i dati, contrassegna le celle e poi verifica se c'รจ un vincitore a ogni round.
  • ๐Ÿ” Replay: Una chiamata ricorsiva a play() riavvia la partita e la convalida dell'input blocca le mosse occupate o fuori intervallo.
  • ๐Ÿค– Rilevanza dell'IA: La stessa scacchiera rappresenta un terreno di gioco ideale per l'algoritmo minimax e gli agenti di apprendimento per rinforzo.
  • ๏ธ Strumenti: A soli Python e un editore come PyCharm sono necessarie; non sono richieste librerie esterne.

Gioco Tic Tac Toe dentro Python

Gioco Tic Tac Toe dentro Python รจ un progetto interessante che puoi provare. รˆ un progetto fantastico e divertente per risolvere una sfida e puรฒ aiutarti a padroneggiare i concetti di base in PythonCreare un divertente gioco del tris ti aiuta a migliorare le tue abilitร .

Puoi usare un bene Python editor come PyCharm o l'interfaccia a riga di comando.

Come si gioca a tris?

Il tris รจ un semplice gioco per due giocatori che chiunque puรฒ fare senza bisogno di un tabellone. Consiste nel segnare caselle diverse fino a quando la partita non termina con una vittoria o un pareggio.

Ecco come si gioca a tris.

Passo 1) Il gioco del tris inizia con delle caselle vuote in una griglia quadrata. Questa รจ la scacchiera del tris.

Passo 2) Entrambi i giocatori scelgono tra due simboli, solitamente X o O. Puoi utilizzare qualsiasi altro simbolo unico nel gioco.

Passo 3) Il giocatore di turno segna i propri punti riempiendo le caselle del tabellone del tris finchรฉ un giocatore non completa una combinazione vincente. Ovvero, un'intera riga, colonna o diagonale con lo stesso segno.

Passo 4) รˆ possibile anche un pareggio nel caso in cui tutte le celle siano piene e non vi sia un vincitore evidente.

Requisiti

Costruire il gioco del tris Python il progetto richiede una comprensione di livello principiante di Python linguaggio di programmazione. Include la comprensione dei cicli "for" e delle iterazioni e a cosa serve un'istruzione if in Python.

Devi anche avere Python e Python editor di testo installato sul tuo computer per completare il Tris Python progetto. Poichรฉ questo รจ un gioco del tris di livello principiante in Python, non avrai bisogno di nulla Python biblioteca.

Potrebbero essere necessarie alcune competenze di debug per trovare soluzioni ai bug nel codice, e dovresti anche avere una conoscenza adeguata dei componenti del gioco.

Tic Tac Toe Python Algoritmo

Segui questi passaggi per creare un gioco del tris in Python linguaggio di programmazione:

Passo 1) Crea la scacchiera per iniziare la partita a tris.

Passo 2) Richiedi all'utente di decidere le dimensioni del tabellone di gioco.

Passo 3) Scegli a caso il primo giocatore.

Passo 4) Inizia la partita del tris.

Passo 5) I giocatori giocano selezionando uno spazio vuoto sul tabellone.

Passo 6) Riempi lo spazio vuoto selezionato con il segno del giocatore.

Passo 7) Determina se un giocatore vince o ottiene un pareggio nel gioco utilizzando la logica del gioco.

Passo 8) Mostra il tabellone di gioco dopo ogni giocata se nessun giocatore vince o ottiene un pareggio rispetto al secondo giocatore.

Passo 9) Visualizza rispettivamente un messaggio di pareggio o di vittoria.

Passo 10) Termina la partita a tris con la possibilitร  di iniziarne una nuova.

Lunga Python codice per tris

# Guru99
# Code developed by Guru99.com
# Guru99 tic-tac-toe game
#Get input
def getInput(prompt, cast=None, condition=None, errorMessage=None):
  while True:
      try:
          val = cast(input(prompt))
          assert condition is None or condition(val)
          return val
      except:
          print(errorMessage or "Invalid input.")
# Print the game board
def printBoard(board):
  print()
  for row in board:
      print(*row)
  print()
# Check if player won using the winning combinations
def checkWin(board):
  # Check rows
  for row in range(len(board)):
      for col in range(len(board)-1):
          if board[row][col] == "_" or board[row][col+1] == "_" or board[row][col] != board[row][col+1]:
              break
      else:
          return True
  # Check column numbers
  for col in range(len(board)):
      for row in range(len(board)-1):
          if board[row][col] == "_" or board[row+1][col] == "_" or board[row][col] != board[row+1][col]:
              break
      else:
          return True
  # Check left diagonal
  for cell in range(len(board)-1):
      if board[cell][cell] == "_" or board[cell+1][cell+1] == "_" or board[cell][cell] != board[cell+1][cell+1]:
          break
  else:
      return True
  # Check right diagonal
  for cell in range(len(board)-1):
      emptyCell = board[cell][len(board)-cell-1] == "_" or board[cell+1][len(board)-cell-2] == "_"
      different = board[cell][len(board)-cell-1] != board[cell+1][len(board)-cell-2]
      if emptyCell or different:
          break
  else:
      return True
  # No win
  return False
# Play tic tac toe game
def play():
  # Introduction
  print("------------\nN-DIMENSIONAL TIC TAC TOE game by guru 99.com \n------------")
  # Set up variables
  N = getInput(prompt="Guru99 says>>> Enter N, the dimensions of the board: ",
               cast=int,
               condition=lambda x: x >= 3,
               errorMessage="Invalid input. Please enter an integer greater than or equal to 3 as explained on guru99.com")
  board = [['_'] * N for _ in range(N)]
  used = 0
  turn = 0
  # Play guru99 tic tac toe game in Python using while infinite loop
  while True:
      # Print guru99 tic tac toe game board
      printBoard(board)
      # Get user pick
      pick = getInput(prompt=f"Player {turn+1} - Pick location (row, col): ",
                      cast=lambda line: tuple(map(int, line.split(" "))),
                      condition=lambda pair: min(pair) >= 0 and max(pair) < N and board[pair[0]][pair[1]] == "_",
                      errorMessage="Invalid input. Please enter a valid, unoccupied location as an integer pair.")
      # Populate location
      board[pick[0]][pick[1]] = "X" if turn == 0 else "O"
      used += 1
      # Check for win
      #Guru99 tutorial
      if checkWin(board):
          printBoard(board)
          print(f"Game over, Player {turn+1} wins.")
          break
      # Check for tie
      elif used == N*N:
          printBoard(board)
          print("Game over. Players have tied the match.")
          print("Guru99.com tic tac toe game ")
          break
      # If no win yet, update next user
      turn = (turn+1)%2
  # Check for rematch
  playAgain = getInput(prompt="Play Guru99 tic tac toe_Game again? (y/n): ",
                       cast=str,
                       condition=lambda ans: ans.strip("\n").lower() in {"y", "n"},
                       errorMessage="Invalid input. Please enter 'y' or 'n'.")
  if playAgain == 'n':
      # End the game
      print("\nGuru99 TicTacToe game ended.")
      return
  else:
      # Rematch
      play()
# Main
if __name__ == '__main__':
  play()

Tic Tac Toe Python Code produzione

Una volta eseguito il codice sorgente sopra riportato, di seguito รจ riportato l'output previsto per una griglia di gioco del tris 3x3:

------------
N-DIMENSIONAL TIC TAC TOE game by guru 99.com
------------
Guru99 says>>> Enter N, the dimensions of the board: 3

_ _ _

_ _ _

_ _ _

Player 1 - Pick location (row, col): 1 1

_ _ _

_ X _

_ _ _

Player 2 - Pick location (row, col): 0 1

_ O _

_ X _

_ _ _

Player 1 - Pick location (row, col): 1 2

_ O _

_ X X

_ _ _

Player 2 - Pick location (row, col): 0 2

_ O O

_ X X

_ _ _

Player 1 - Pick location (row, col): 1 0

_ O O

X X X

_ _ _

Game over, Player 1 wins.
Play Guru99 tic tac toe_Game again? (y/n):

Lunga Code Guasto

Creazione Tic Tac Toe dentro Python รˆ semplice. Analizziamo le diverse funzioni pezzo per pezzo per capire cosa succede in ogni riga:

Stampa della scheda

La scacchiera del tris รจ la schermata principale del gioco. Python, viene utilizzata una finestra di visualizzazione per mostrare il tabellone di gioco.

Ecco i passaggi che ti aiutano a creare una scacchiera per il Tris in Python:

Python codice per Tic Tac Toe

def getInput(prompt, cast=None, condition=None, errorMessage=None):
   while True:
       try:
           val = cast(input(prompt))
           assert condition is None or condition(val)
           return val
       except:
           print(errorMessage or "Invalid input.")
# Print the board
def printBoard(board):
   print()
   for row in board:
       print(*row)
   print()
N = getInput(prompt="Guru99 says>>> Enter N, the dimensions of the board: ",
            cast=int,
            condition=lambda x: x >= 3,
            errorMessage="Invalid input. Please enter an integer greater than or equal to 3 as explained on guru99.com")
board = [['_'] * N for _ in range(N)]
used = 0
turn = 0
printBoard(board)

Code produzione:

------------
N-DIMENSIONAL TIC TAC TOE game by guru 99.com
------------
Guru99 says>>> Enter N, the dimensions of the board: 3

_ _ _

_ _ _

_ _ _

Gioco Tic Tac Toe โ€“ arrangiamento vincente

Per verificare se un giocatore ha vinto, dobbiamo controllare le combinazioni vincenti su righe, colonne e diagonali. Se c'รจ un vincitore, dobbiamo mostrare un messaggio vincente.

Righe

  • Per la riga, la funzione prende ogni coppia consecutiva di colonne e verifica la presenza di una combinazione vincente.
  • Vince il primo giocatore che riempie le righe. Il secondo giocatore perde cosรฌ.
  • Se due colonne consecutive sono uguali, รจ ovvio che tutti gli elementi all'interno di quella riga sono uguali.
  • Se due di essi sono diversi o la riga contiene una cella vuota, non esiste comunque alcun vincitore.
  • Quindi implementiamo le condizioni perdenti e aggiungiamo una pausa. Se una qualsiasi di queste condizioni perdenti รจ vera, non abbiamo un vincitore nella riga selezionata.
  • L'istruzione else fornisce un rendimento vero per dimostrare che esiste un vincitore.
  • L'interruzione interrompe questo ciclo per procedere alla riga successiva.

Colonne

Per le colonne ripetiamo la stessa funzione delle righe. Controlliamo se un giocatore ha vinto dopo che ogni giocatore ha scelto il proprio posto.

Vince la fila diagonale

Per la diagonale sinistra, il compito diventa piรน semplice. Confronteremo sempre le celle sulle diagonali. Tuttavia, nel caso in cui non ci sia un vincitore, possiamo procedere all'istruzione successiva.

Gioca alla logica del gioco

Questa รจ la funzione principale del gioco. Per questo possiamo usare variabili che memorizzano informazioni.

  • La prima variabile รจ la dimensione della scheda memorizzata in โ€œNโ€. Il gioco otterrร  la dimensione del tabellone dopo aver chiesto all'utente di inserire un numero.
  • Pertanto, quando si immette il valore, questo viene elaborato.
  • Creiamo anche un messaggio di errore per mostrare ai giocatori quando viene digitato un numero non valido.
  • Possiamo quindi creare due variabili che riempiono una "X" o una "O" quando una cella รจ piena.
  • Poi mostra ai giocatori il tabellone di gioco. Successivamente, ottieni l'input del giocatore.
  • La logica contrassegnerร  quindi la cella selezionata come riempita e verificherร  la vittoria o il pareggio.
  • Se non c'รจ nessun vincitore, il gioco chiede al giocatore successivo di giocare. Se c'รจ una vittoria o un pareggio, il gioco puรฒ chiedere agli utenti se desiderano un nuovo gioco.

DOMANDE FREQUENTI

Sรฌ. Tic Tac Toe รจ un classico progetto per principianti che trasforma cicli, istruzioni condizionali e funzioni in un gioco funzionante. Aiuta a sviluppare sicurezza, a consolidare la sintassi di base e a prepararsi per progetti piรน complessi senza bisogno di librerie esterne.

Rinforza le liste annidate per la scacchiera, i cicli for e while per i turni, le istruzioni if โ€‹โ€‹per i controlli di vittoria, le funzioni per la struttura e la ricorsione per il riavvio. Questi fondamenti si trasferiscono direttamente a concetti piรน avanzati. Python programmi.

Sรฌ. Oltre alla versione per console, librerie come Tkinter e Pygame aggiungono pulsanti cliccabili, una griglia grafica e l'input del mouse. La logica di gioco rimane la stessa; cambiano solo i livelli di visualizzazione e di input.

Il tris รจ un gioco risolto. Quando entrambi i giocatori giocano in modo ottimale, ogni minaccia puรฒ essere bloccata, quindi nessuno puรฒ imporre la vittoria. Ecco perchรฉ una partita perfetta, sia umana che computerizzata, finisce sempre in pareggio.

Una versione base da console richiede a un principiante da una a tre ore per essere completata, una volta che i cicli e le istruzioni condizionali diventano familiari. L'aggiunta della convalida dell'input, di una scheda scalabile o di un'interfaccia grafica estende il progetto e richiede un intero fine settimana di pratica.

Sostituisci un giocatore con una funzione minimax. Questa esplora ricorsivamente ogni possibile mossa, registrando vittorie, sconfitte e pareggi, per poi scegliere la mossa con il miglior risultato garantito. Su una scacchiera piccola, questo rende il computer imbattibile.

Sรฌ. Gli agenti di apprendimento per rinforzo come il Q-learning migliorano giocando migliaia di partite e premiando le mosse vincenti. Le scacchiere sono memorizzate come array con NumPy, consentendo al modello di apprendere una strategia quasi ottimale senza regole predefinite.

Sรฌ. GitHub Copilot e assistenti IA simili possono generare la scacchiera, gestire i cicli di turni e vincere gli scacchi a partire da un breve input. Considera l'output come una prima bozza, poi testa tu stesso i casi limite come i pareggi e le mosse non valide.

Riassumi questo post con: