Jak vytvořit hru Tic Tac Toe Python s Code Příklad

⚡ Chytré shrnutí

Piškvorky v Python je projekt vhodný pro začátečníky, který znovu vytváří klasickou mřížkovou hru pro dva hráče. Jeho sestavení posiluje základní dovednosti, jako jsou smyčky, podmíněné výrazy, seznamy, funkce a rekurze, a zároveň kontroluje řádky, sloupce a diagonály pro nalezení vítěze.

  • 🎮 Gameplay: Dva hráči označují X a O na čtvercové mřížce, dokud jeden z nich nedokončí řádek, sloupec nebo diagonálu.
  • 🧩 Základní logika: Vnořené seznamy ukládají hrací desku, zatímco smyčky a podmíněné výrazy řídí tahy a detekují výhru nebo remízu.
  • 🏗️ Kroky sestavení: Vytvořte hrací desku, vyberte prvního hráče, zaznamenejte vstupy, označte buňky a poté v každém kole zkontrolujte vítěze.
  • 🔁 replay: Rekurzivní volání play() restartuje zápas a validace vstupu blokuje obsazené nebo mimo rozsah tahy.
  • 🤖 Relevance umělé inteligence: Stejná hrací deska je ideálním hřištěm pro algoritmus minimax a agenty učení s posilováním.
  • 🛠️ Nástroje: Pouze Python a editor jako např. PyCharm jsou potřeba; nejsou potřeba žádné externí knihovny.

Hra Tic Tac Toe in Python

Hra Tic Tac Toe in Python je zajímavý projekt, který můžete vyzkoušet. Je to skvělý a zábavný projekt, který vám pomůže vyřešit problém a zvládnout základní pojmy v PythonVytvoření zábavné hry Piškvorky vám pomůže rozvíjet vaše dovednosti.

Můžete použít dobrý Python editor jako například PyCharm nebo rozhraní příkazového řádku.

Jak hrát hru Piškvorky?

Piškvorky je jednoduchá hra pro dva hráče, kterou si může zahrát kdokoli bez herního plánu. Dva hráči označují různá políčka, dokud hra neskončí výhrou nebo remízou.

Zde je návod, jak hrát hru Piškvorky.

Krok 1) Hra Piškvorky začíná s prázdnými políčky ve čtvercové mřížce. Toto je hrací deska Piškvorky.

Krok 2) Oba hráči si vybírají ze dvou symbolů, obvykle Xs nebo Os. Ve hře můžete použít jakýkoli jiný jedinečný symbol.

Krok 3) Aktuální hráč střídavě vyplňuje políčka na hrací desce piškvorky, dokud jeden z hráčů neobsadí výherní kombinaci. To znamená celý řádek, sloupec nebo diagonálu se stejným znaménkem.

Krok 4) Remíza je možná i v případě, že jsou všechna políčka plná a není zjevný vítěz.

požadavky

Stavba piškvorek Python projekt vyžaduje znalosti na úrovni začátečníků Python programovacího jazyka. Zahrnuje pochopení smyček „for“ a iterací a k čemu se používá příkaz if v Python.

Musíte také mít Python a Python textový editor nainstalovaný v počítači pro dokončení hry Piškvorky Python projekt. Jelikož se jedná o hru Piškvorky pro začátečníky, Python, nebudete potřebovat žádné Python knihovna.

K nalezení řešení chyb ve vašem kódu budete možná potřebovat určité ladicí dovednosti a měli byste také dostatečně rozumět herním komponentám.

Tic Tac Toe Python Algoritmus

Postupujte podle těchto kroků a vytvořte hru Piškvorky Python programovací jazyk:

Krok 1) Vytvořte hrací desku pro zahájení hry Piškvorky.

Krok 2) Požádejte uživatele, aby rozhodl o rozměrech herního plánu.

Krok 3) Náhodně vyberte prvního hráče.

Krok 4) Hra Piškvorky začíná.

Krok 5) Hráči hrají výběrem prázdného místa na herním plánu.

Krok 6) Vyplňte prázdné vybrané místo znakem hráče.

Krok 7) Pomocí herní logiky určete, zda hráč ve hře vyhraje nebo získá remízu.

Krok 8) Pokud žádný hráč nevyhraje nebo nezíská nerozhodný výsledek s druhým hráčem, po každé hře vystavte herní plán.

Krok 9) Zobrazte zprávu o remíze nebo výhře.

Krok 10) Ukončete hru Piškvorky s možnostmi zahájení nové hry.

Plný Python kód pro tic tac toe

# 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 výstup

Jakmile spustíte výše uvedený zdrojový kód, níže je uveden očekávaný výstup pro hrací desku Piškvorky o rozměrech 3 x 3:

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

Plný Code Zhroucení

Vytvoření Piškvorky v Python je to jednoduché. Pojďme si rozebrat různé funkce po bitech, abychom pochopili, co se děje na každém řádku:

Tisk desky

Hlavní herní displej je hrací deska Piškvorky. V Python, k zobrazení herní desky se používá zobrazovací okno.

Zde jsou kroky, které vám pomohou vytvořit hrací desku pro Piškvorky Python:

Python kód pro 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 výstup:

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

_ _ _

_ _ _

_ _ _

Hra Tic Tac Toe – vítězné uspořádání

Abychom zjistili, zda některý hráč vyhrál, musíme zkontrolovat výherní kombinace v řádcích, sloupcích a diagonálách. Pokud existuje vítěz, musíme ukázat vítěznou zprávu.

Řádky

  • Pro řádek funkce vezme každý po sobě jdoucí pár sloupců a zkontroluje výherní kombinaci.
  • První hráč, který vyplní řádky, vyhrává. Druhý hráč tak prohrává.
  • Pokud jsou dva po sobě jdoucí sloupce stejné, pak je zřejmé, že všechny prvky v daném řádku jsou stejné.
  • Pokud se dva z nich liší nebo řádek obsahuje prázdnou buňku, stále není vítěz.
  • Poté implementujeme podmínky prohry a přidáme přestávku. Pokud je splněna některá z těchto podmínek prohry, neměli jsme v zaškrtnuté řadě vítěze.
  • Prohlášení else poskytuje skutečnou návratnost, která ukazuje, že existuje vítěz.
  • Z této smyčky se přeruší a pokračuje se v další řadě.

Sloupce

U sloupců opakujeme stejnou funkci jako u řádků. Zda hráč vyhrál, zkontrolujeme poté, co si každý hráč vybere své místo.

Diagonální řada vítězí

U levé diagonály se úkol zjednoduší. Vždy budeme porovnávat buňky v diagonálách. Pokud však neexistuje vítěz, můžeme pokračovat k další instrukci.

Hrajte herní logiku

Toto je hlavní funkce hry. K tomu můžeme použít proměnné, které uchovávají informace.

  • První proměnnou je velikost desky uložená v „N“. Hra získá velikost desky poté, co požádá uživatele o zadání čísla.
  • Takže když zadáte hodnotu, je zpracována.
  • Vytváříme také chybovou zprávu, která hráčům ukáže, když zadáte jakékoli neplatné číslo.
  • Poté můžeme vytvořit dvě proměnné, které při zaplnění buňky vyplní „X“ nebo „O“.
  • Poté ukažte hráčům herní plán. Poté získejte informace od hráče.
  • Logika pak označí vybranou buňku jako vyplněnou a zkontroluje výhru nebo remízu.
  • Pokud není vítěz, hra požádá dalšího hráče, aby hrál. Pokud dojde k výhře nebo remíze, hra se může uživatelů zeptat, zda chtějí novou hru.

Nejčastější dotazy

Ano. Piškvorky je klasický projekt pro začátečníky, který promění smyčky, podmíněné výrazy a funkce ve funkční hru. Buduje sebevědomí, posiluje základní syntaxi a připravuje vás na větší projekty bez nutnosti externích knihoven.

Posiluje vnořené seznamy pro hrací desku, smyčky for a while pro tahy, příkazy if pro kontroly výher, funkce pro struktury a rekurzi pro restartování. Tyto základy lze přímo přenést do pokročilejších systémů. Python programy.

Ano. Kromě konzolové verze přidávají knihovny jako Tkinter a Pygame klikací tlačítka, kreslenou mřížku a vstup myší. Logika hry zůstává stejná; mění se pouze zobrazovací a vstupní vrstvy.

Piškvorky je hra, na kterou se hráči musí vyřešit. Když oba hráči hrají optimálně, lze každou hrozbu zablokovat, takže si nikdo nemůže vynutit vítězství. Proto bezchybný zápas, ať už lidský nebo počítačový, vždy skončí remízou.

Základní konzolová verze zabere začátečníkovi jednu až tři hodiny, jakmile se se smyčkami a podmíněnými výrazy seznámí. Přidání validace vstupu, škálovatelné tabule nebo grafického rozhraní prodlouží projekt o víkendový trénink.

Nahraďte jednoho hráče minimaxní funkcí. Ta rekurzivně prozkoumává všechny možné tahy, zaznamenává výhry, prohry a remízy a poté vybere tah s nejlepším zaručeným výsledkem. Na malé herní desce je tak počítač nemožné porazit.

Ano. Agenti posilujícího učení, jako je Q-learning, se zlepšují hraním tisíců her a odměňováním vítězných tahů. Herní desky jsou uloženy jako pole s nemotorný, což umožňuje modelu naučit se téměř optimální strategii bez pevně zakódovaných pravidel.

Ano. GitHub Copilot a podobní AI asistenti dokáží z krátkého promptu vybudovat desku, otočit smyčku a vyhrát šachy. Výstup považujte za první návrh a pak sami testujte okrajové případy, jako jsou remízy a neplatné tahy.

Shrňte tento příspěvek takto: