Как да направите игра Tic Tac Toe в Python с Code Пример

⚡ Умно обобщение

Морски шах в Python е проект, подходящ за начинаещи, който пресъздава класическата игра с мрежа за двама играчи. Създаването му засилва основни умения като цикли, условни изрази, списъци, функции и рекурсия, като същевременно проверява редове, колони и диагонали за победител.

  • 🎮 Игра: Двама играчи маркират X и O върху квадратна мрежа, докато единият завърши ред, колона или диагонал.
  • 🧩 Основна логика: Вложените списъци съхраняват дъската, докато циклите и условните оператори управляват ходовете и откриват победа или равенство.
  • 🏗️ Стъпки на изграждане: Създайте дъската, изберете първия играч, вземете информация, маркирайте клетките и след това проверявайте за победител във всеки рунд.
  • 🔁 Replay: Рекурсивно извикване на play() рестартира мача, а валидирането на входните данни блокира заети или извън обхват ходове.
  • 🤖 Релевантност на ИИ: Същата дъска е идеална площадка за минимаксния алгоритъм и агентите за обучение с подсилване.
  • 🛠️ Инструменти: Само Python и редактор като например PyCharm са необходими; не са необходими външни библиотеки.

Tic Tac Toe Игра в Python

Tic Tac Toe Игра в Python е интересен проект, който можете да опитате. Това е готин и забавен проект за решаване на предизвикателство и може да ви помогне да усвоите основни понятия в PythonСъздаването на забавна игра „Морски шах“ ви помага да развиете уменията си.

Можете да използвате добър Python редактор, като например PyCharm или интерфейса на командния ред.

Как се играе играта „Морски шах“?

Морски шах е проста игра за двама играчи, която всеки може да играе, без да е необходимо игрално поле. В нея двама играчи маркират различни клетки, докато играта завърши с победа или равенство.

Ето как се играе играта „Морски шах“.

Стъпка 1) Играта „Тик-Так-То“ започва с празни клетки в квадратна мрежа. Това е дъската „Тик-Так-То“.

Стъпка 2) И двамата играчи избират от два символа, обикновено Xs или Os. Можете да използвате всеки друг уникален символ в играта.

Стъпка 3) Текущият играч отбелязва на свой ред, като попълва клетките на дъската „Морски шах“, докато не попълни печеливша комбинация. Това е цял ред, колона или диагонал с един и същ знак.

Стъпка 4) Равенство в играта е възможно и в случай, че всички клетки са запълнени без видим победител.

Изисквания

Изграждане на „Тик-так-ту“ Python проектът изисква разбиране на начинаещо ниво Python език за програмиране. Включва разбиране на циклите „for“ и итерациите, както и за какво се използва if операторът в Python.

Вие също трябва да имате Python и Python текстов редактор, инсталиран на вашия компютър, за да завършите играта „Морски шах“ Python проект. Тъй като това е игра „Тик-так-палец“ за начинаещи, Python, няма да ви е необходим никакъв Python библиотека.

Може да ви трябват някои умения за отстраняване на грешки, за да намерите решения за грешки в кода си, а също така трябва да имате адекватно разбиране за компонентите на играта.

Tic Tac Toe Python алгоритъм

Следвайте тези стъпки, за да създадете игра „Тик-так-палец“ в Python език за програмиране:

Стъпка 1) Създайте дъската, за да започнете играта „Морски шах“.

Стъпка 2) Помолете потребителя да вземе решение относно размерите на дъската за игра.

Стъпка 3) На случаен принцип изберете първия играч.

Стъпка 4) Играта „Тик-так-то“ започва.

Стъпка 5) Играчите играят, като избират празно място на дъската.

Стъпка 6) Попълнете празното избрано място със знака на играча.

Стъпка 7) Определете дали даден играч печели или получава равенство в играта, като използвате логиката на играта.

Стъпка 8) Показвайте таблото за игра след всяка игра, ако никой играч не спечели или получи равенство с втория играч.

Стъпка 9) Покажете съответно съобщение за равенство или победа.

Стъпка 10) Завършете играта „Морски шах“ с опции за започване на нова игра.

Пълен Python код за 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 продукция

След като изпълните горния изходен код, по-долу е очакваният резултат за дъска 3 X 3 Tic Tac Toe:

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

Пълен Code Повреда

Създаване Морски шах в Python е просто. Нека анализираме различните функции по битове, за да разберем какво се случва за всеки ред:

Отпечатване на таблото

Дъската „Морски шах“ е основният дисплей на играта. В Python, прозорец за показване на игралното поле се използва.

Ето стъпките, които ще ви помогнат да създадете дъска за Tic Tac Toe в Python:

Python код за 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 изход:

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

_ _ _

_ _ _

_ _ _

Игра Tic Tac Toe – печеливша подредба

За да проверим дали някой играч е спечелил, трябва да проверим печелившите комбинации в редовете, колоните и диагоналите. Ако има победител, трябва да покажем печелившо съобщение.

Редове

  • За реда функцията взема всяка последователна двойка колони и проверява за печеливша комбинация.
  • Първият играч, който запълни редовете, печели. Така вторият играч губи.
  • Ако два последователни реда са еднакви, тогава е очевидно, че всички елементи в този ред са еднакви.
  • Ако две от тях са различни или редът съдържа празна клетка, пак няма победител.
  • След това прилагаме условия за загуба и добавяме почивка. Ако някое от тези условия за загуба е вярно, не сме имали победител в отбелязания ред.
  • Изявлението else дава истинска възвръщаемост, за да покаже, че има победител.
  • Прекъсването излиза от този цикъл, за да продължи към следващия ред.

Колони

За колоните повтаряме същата функция като в редовете. Ние проверяваме дали даден играч е спечелил, след като всеки играч избере своето място.

Диагоналният ред печели

За левия диагонал задачата става по-лесна. Винаги ще сравняваме клетките в диагоналите. В случай че обаче няма победител, можем да преминем към следващата инструкция.

Играйте логическа игра

Това е основната функция на играта. За целта можем да използваме променливи, които съхраняват информация.

  • Първата променлива е размерът на платката, записан в "N". Играта ще получи размера на дъската, след като поиска от потребителя да въведе число.
  • Така че, когато въведете стойността, тя се обработва.
  • Ние също създаваме съобщение за грешка, за да покажем на играчите, когато бъде въведено невалидно число.
  • След това можем да създадем две променливи, които попълват „X“ или „O“, когато клетката е попълнена.
  • След това покажете на играчите дъската за игра. След това вземете информацията от играча.
  • След това логиката ще маркира избраната клетка като попълнена и ще провери за печалба или равенство.
  • Ако няма победител, играта кара следващия играч да играе. Ако има победа или равенство, играта може да попита потребителите дали искат нова игра.

Въпроси и Отговори

Да. Tic Tac Toe е класически проект за начинаещи, който превръща цикли, условни изрази и функции в работеща игра. Той изгражда увереност, подсилва основния синтаксис и ви подготвя за по-големи проекти, без да е необходимо да използвате външни библиотеки.

Той подсилва вложените списъци за дъската, циклите for и while за ходове, if операторите за проверки за победа, функциите за структуриране и рекурсията за рестартиране. Тези основи се пренасят директно към по-напреднали. Python програми.

Да. Освен конзолната версия, библиотеки като Tkinter и Pygame добавят бутони за кликване, начертана мрежа и въвеждане с мишка. Логиката на играта остава същата; променят се само слоевете за показване и въвеждане.

Морски шах е игра с решен резултат. Когато и двамата играчи играят оптимално, всяка заплаха може да бъде блокирана, така че никой не може да наложи победа. Ето защо един безупречен мач, независимо дали е от страна на човек или компютър, винаги завършва наравно.

Базовата конзолна версия отнема на начинаещия от един до три часа, след като циклите и условните оператори му станат познати. Добавянето на валидиране на входа, мащабируема дъска или графичен интерфейс удължава проекта в рамките на един уикенд практика.

Заменете един играч с минимакс функция. Тя рекурсивно изследва всеки възможен ход, отбелязвайки победи, загуби и равенства, след което избира хода с най-добрия гарантиран резултат. На малка дъска това прави компютъра невъзможен за побеждаване.

Да. Агентите за обучение с подсилване, като например Q-learning, се подобряват чрез играене на хиляди игри и възнаграждаване на печелившите ходове. Дъските се съхраняват като масиви с numpy, позволявайки на модела да научи почти оптимална стратегия без твърдо кодирани правила.

Да. GitHub Copilot и подобни AI асистенти могат да изградят дъската, да обърнат цикъл и да спечелят чекове от кратък промпт. Третирайте резултата като първа чернова, след което сами тествайте гранични случаи като равенства и невалидни ходове.

Обобщете тази публикация с: