Як зробити гру Tic Tac Toe в Python з Code Приклад

⚡ Розумний підсумок

Хрестики-нулики в Python – це проєкт, зручний для початківців, який відтворює класичну гру в сітці для двох гравців. Його складання зміцнює основні навички, такі як цикли, умовні оператори, списки, функції та рекурсія, одночасно перевіряючи рядки, стовпці та діагоналі на предмет переможця.

  • 🎮 Ігровий процес: Двоє гравців позначають X та O на квадратній сітці, поки один з них не завершить рядок, стовпець або діагональ.
  • 🧩 Основна логіка: Вкладені списки зберігають дошку, тоді як цикли та умовні оператори керують ходами та виявляють перемогу чи нічию.
  • 🏗️ Кроки збірки: Створіть дошку, виберіть першого гравця, прийміть дані, позначте клітинки, а потім перевіряйте переможця в кожному раунді.
  • 🔁 Replay: Рекурсивний виклик play() перезапускає матч, а перевірка вхідних даних блокує зайняті або позадоступні ходи.
  • 🤖 Релевантність ШІ: Ця ж дошка є ідеальним майданчиком для алгоритму мінімаксу та агентів навчання з підкріпленням.
  • 🛠️ Інструменти: Only Python і редактор, такий як PyCharm потрібні; жодних зовнішніх бібліотек не потрібно.

Гра в хрестики-нулики Python

Гра в хрестики-нулики 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 код для хрестиків-нуликів

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

------------
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, для відображення ігрового поля використовується вікно відображення.

Ось кроки, які допоможуть вам створити дошку для гри в хрестики-нулики. 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

_ _ _

_ _ _

_ _ _

Гра «Хрестики-нулики» – виграшна композиція

Щоб перевірити, чи виграв якийсь гравець, нам потрібно перевірити виграшні комбінації в рядках, стовпцях і діагоналях. Якщо є переможець, нам потрібно показати виграшне повідомлення.

ряди

  • Для рядка функція бере кожну послідовну пару стовпців і перевіряє виграшну комбінацію.
  • Перемагає гравець, який першим заповнить рядки. Таким чином другий гравець програє.
  • Якщо пара послідовних стовпців однакові, то очевидно, що всі елементи в цьому рядку однакові.
  • Якщо два з них різні або рядок містить порожню клітинку, переможця все одно немає.
  • Потім ми реалізуємо умови програшу та додаємо перерву. Якщо будь-яка з цих програшних умов є істинною, ми не мали переможця в позначеному рядку.
  • Інструкція else дає істинний результат, щоб показати, що є переможець.
  • Розрив виривається з цієї петлі, щоб перейти до наступного ряду.

Колони

Для стовпців ми повторюємо ту ж функцію, що і для рядків. Ми перевіряємо, чи виграв гравець після того, як кожен гравець вибере своє місце.

Виграє діагональний ряд

Для лівої діагоналі завдання стає простіше. Ми завжди будемо порівнювати клітинки на діагоналях. Однак, якщо переможця немає, ми можемо перейти до наступної інструкції.

Грайте в логічні ігри

Це основна функція гри. Для цього ми можемо використовувати змінні, які зберігають інформацію.

  • Перша змінна — це розмір плати, збережений у «N». Гра отримає розмір дошки після того, як попросить користувача ввести число.
  • Отже, коли ви вводите значення, воно обробляється.
  • Ми також створюємо повідомлення про помилку, щоб показати гравцям, коли вводиться будь-який недійсний номер.
  • Потім ми можемо створити дві змінні, які заповнюють «X» або «O», коли комірка заповнена.
  • Потім покажіть гравцям ігрове поле. Після цього отримайте інформацію від гравця.
  • Потім логіка позначить вибрану комірку як заповнену та перевірить виграш чи нічию.
  • Якщо переможця немає, гра пропонує наступному гравцеві грати. Якщо є виграш або нічия, гра може запитати користувачів, чи хочуть вони нову гру.

Поширені запитання

Так. Хрестики-нулики – це класичний проєкт для початківців, який перетворює цикли, умовні оператори та функції на робочу гру. Він розвиває впевненість, закріплює основний синтаксис і готує вас до більших проєктів без потреби в будь-яких зовнішніх бібліотеках.

Це підсилює вкладені списки для дошки, цикли for та while для поворотів, оператори if для перевірок виграшу, функції для структури та рекурсію для перезапуску. Ці основи безпосередньо переносяться на більш просунуті Python програм.

Так. Окрім консольної версії, такі бібліотеки, як Tkinter та Pygame, додають кнопки, намальовану сітку та ввід за допомогою миші. Логіка гри залишається незмінною; змінюються лише шари відображення та введення.

Хрестики-нулики – це гра, у яку потрібно виграти. Коли обидва гравці грають оптимально, кожну загрозу можна заблокувати, тому ніхто не може форсувати перемогу. Ось чому бездоганний матч, незалежно від того, чи йдеться про людину, чи про комп'ютер, завжди закінчується нічиєю.

Базова консольна версія займає у новачка від однієї до трьох годин, як тільки цикли та умовні оператори стануть знайомими. Додавання перевірки вхідних даних, масштабованої дошки або графічного інтерфейсу розширює проєкт на вихідні практики.

Замініть одного гравця мінімаксною функцією. Вона рекурсивно досліджує кожен можливий хід, підраховуючи виграші, програші та нічиї, а потім вибирає хід з найкращим гарантованим результатом. На маленькій дошці це робить комп'ютер непереможним.

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

Так. GitHub Copilot та подібні помічники на основі штучного інтелекту можуть створювати каркас дошки, перевертати цикли та вигравати чеки за допомогою короткого запиту. Розглядайте результат як перший чернетку, а потім самостійно тестуйте граничні випадки, такі як нічиї та недійсні ходи.

Підсумуйте цей пост за допомогою: