Как сделать игру «Крестики-нолики» в Python с примером кода

Игра в крестики-нолики Python интересный проект, который вы можете попробовать. Это классный и веселый проект решения проблемы, который может помочь вам освоить базовые концепции в Python. Создание забавной игры в крестики-нолики поможет вам развить свои навыки.

Вы можете использовать хороший Python редактор, такой как Pycharm, или интерфейс командной строки.

Как играть в игру Тик Ток?

Игра «Крестики-нолики» — это простая игра для двух игроков, в которую каждый может играть без игровой доски. В нем два игрока отмечают разные клетки до тех пор, пока игра не закончится, не будет достигнута победа или ничья.

Вот как можно играть в крестики-нолики.

Шаг 1) Игра в крестики-нолики начинается с пустых ячеек в квадратной сетке. Это доска для игры в крестики-нолики.

Шаг 2) Оба игрока выбирают один из двух символов, обычно X или O. Вы можете использовать любой другой уникальный символ в игре.

Шаг 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 Вывод кода

После того, как вы запустите приведенный выше исходный код, ниже будет показан ожидаемый результат для доски «крестики-нолики» 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):

Полная разбивка кода

Создающий крестики-нолики в Python это просто. Давайте разберем различные функции по частям, чтобы понять, что происходит в каждой строке:

Печать платы

Доска «Крестики-нолики» является основным игровым дисплеем. В, Python Окно дисплея используется для отображения игрового поля.

Вот шаги, которые помогут вам создать доску для крестиков-ноликов в Python:

Python код для крестиков-ноликов

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)

Вывод кода:

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

_ _ _

_ _ _

_ _ _

Игра «Крестики-нолики» – выигрышная комбинация

Чтобы проверить, выиграл ли какой-либо игрок, нам нужно проверить выигрышные комбинации по строкам, столбцам и диагоналям. Если есть победитель, нам нужно показать выигрышное сообщение.

Ряды

  • Для строки функция берет каждую последовательную пару столбцов и проверяет наличие выигрышной комбинации.
  • Побеждает тот, кто первым заполнит ряды. Таким образом, второй игрок проигрывает.
  • Если пара последовательных столбцов одинакова, то очевидно, что все элементы в этой строке одинаковы.
  • Если два из них разные или строка содержит пустую ячейку, победителя все равно нет.
  • Затем мы реализуем проигрышные условия и добавляем перерыв. Если какое-либо из этих проигрышных условий верно, у нас не было победителя в отмеченной строке.
  • Оператор else дает истинный возврат, показывая, что есть победитель.
  • Разрыв выходит из этого цикла и переходит к следующей строке.

Колонки

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

Диагональный ряд выигрывает

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

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

Это основная функция игры. Для этого мы можем использовать переменные, хранящие информацию.

  • Первая переменная — это размер платы, хранящийся в «N». Игра получит размер доски после того, как пользователю будет предложено ввести число.
  • Итак, когда вы вводите значение, оно обрабатывается.
  • Мы также создаем сообщение об ошибке, чтобы показать игрокам, когда введен какой-либо неверный номер.
  • Затем мы можем создать две переменные, которые заполнят «X» или «O» при заполнении ячейки.
  • Затем покажите игрокам игровое поле. После этого получите данные от игрока.
  • Затем логика пометит выбранную ячейку как заполненную и проверит наличие выигрыша или ничьей.
  • Если победителя нет, игра предлагает сыграть следующему игроку. Если есть победа или ничья, игра может спросить пользователей, хотят ли они новую игру.

Заключение

  • Крестики-нолики — это увлекательная игра для двоих, в которую можно играть, помещая уникальный символ в пустую ячейку доски.
  • Создание игры в крестики-нолики Python требует начального уровня понимания Python, текстовый редактор и Python установлен.
  • Алгоритм помогает систематически писать код на любом языке.
  • Чтобы создать игру, сначала нарисуйте доску и напишите код, чтобы определить выигрышные и проигрышные схемы.
  • Вы можете проверить код крестиков-ноликов в Python сначала сыграв в нее.