Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Создайте игру «Крестики-нолики» на Python:пошаговое руководство по коду

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

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

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

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

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

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

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

Шаг 3) Текущий игрок отмечает по очереди, заполняя ячейки доски для крестиков-ноликов, пока игрок не заполнит выигрышную комбинацию. Это целая строка, столбец или диагональ с одним и тем же знаком.

Шаг 4) Ничья также возможна в случае, если все ячейки заполнены и нет явного победителя.

Требования

Создание проекта крестики-нолики Python требует начального понимания языка программирования Python. Он включает в себя понимание циклов и итераций «for», а также того, что такое оператор if в Python.

Для завершения проекта Python «крестики-нолики» на вашем компьютере также должен быть установлен Python и текстовый редактор Python. Поскольку это игра в крестики-нолики на Python для начинающих, никакая библиотека Python вам не понадобится.

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

Алгоритм 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()

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

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

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

Строки

Столбцы

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

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

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

Играйте в логику игры

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

Заключение


Python

  1. Поменять местами две переменные Python, не используя третью
  2. Класс данных Python:лучший способ хранения данных
  3. Python против JavaScript:разница между JavaScript и Python
  4. Python — списки
  5. Python — программирование расширений с помощью C
  6. Создайте игру «Крестики-нолики» на Python:пошаговое руководство по коду
  7. Учебник Python CALENDAR с примером
  8. Строки Python:заменить, объединить, разделить, перевернуть, прописные и строчные буквы
  9. Преобразование временных меток Python в дату и время (и обратно) — краткое руководство
  10. Python @property декоратор