Как создать игру «Крестики-нолики» на 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()
Вывод кода Python Tic Tac Toe
После запуска исходного кода, приведенного выше, ниже приведен ожидаемый результат для доски «крестики-нолики» 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, сначала воспроизведя его.