Привет! Меня зовут Алексей‚ и сегодня я хочу поделиться с вами своим опытом написания игры ″Крестики-нолики″ на языке программирования Python‚ используя объектно-ориентированную парадигму программирования.
Перед тем‚ как начать писать код‚ давайте определимся с тем‚ как будет выглядеть поле игры. В нашем случае‚ оно будет представлять собой список из 3 списков‚ каждый из которых будет содержать 3 элемента. Крестики будут обозначаться символом ‘X’‚ нолики ⎯ символом ‘O’‚ а пустые ячейки ─ символом ‘ ‘.
Итак‚ приступим к написанию кода! Сначала‚ создадим класс Game‚ который будет представлять нашу игру. В конструкторе этого класса мы будем инициализировать поле игры и текущего игрока.class Game⁚
def __init__(self)⁚
self.board [[‘ ‘‚ ‘ ‘‚ ‘ ‘]‚ [‘ ‘‚ ‘ ‘‚ ‘ ‘]‚ [‘ ‘‚ ‘ ‘‚ ‘ ‘]]
self.current_player ‘X’
Далее‚ создадим метод для отображения поля игры. Он будет просто печатать текущее состояние поля. def display_board(self)⁚
for row in self.board⁚
print(‘ | ‘.join(row))
print(‘———‘)
Теперь‚ создадим метод для хода игрока. В этом методе мы будем запрашивать координаты ячейки‚ в которую игрок хочет поставить свой символ‚ и затем проверять‚ возможен ли такой ход. Если ход возможен‚ мы обновляем поле игры и меняем текущего игрока. def make_move(self)⁚
while True⁚
row int(input(‘Введите номер строки⁚ ‘)) ─ 1
col int(input(‘Введите номер столбца⁚ ‘)) ─ 1
if row < 0 or row > 3 or col < 0 or col > 3 or self.board[row][col] ! ‘ ‘⁚
print(‘Неверные координаты или ячейка уже занята!’)
else⁚
self.board[row][col] self.current_player
break
self.current_player ‘O’ if self.current_player ‘X’ else ‘X’
Следующий метод‚ который мы создадим‚ будет проверять‚ есть ли победитель в текущем состоянии игры. Мы будем проверять строки‚ столбцы и диагонали на наличие одинаковых символов. def check_winner(self)⁚
# Проверка строк
for row in self.board⁚
if row[0] row[1] row[2] ! ‘ ‘⁚
return row[0]
# Проверка столбцов
for col in range(3)⁚
if self.board[0][col] self.board[1][col] self.board[2][col] ! ‘ ‘⁚
return self.board[0][col]
# Проверка диагоналей
if self.board[0][0] self.board[1][1] self.board[2][2] ! ‘ ‘ or \
self.board[0][2] self.board[1][1] self.board[2][0] ! ‘ ‘⁚
return self.board[1][1]
return None
Наконец‚ создадим метод для запуска игры. Мы будем вызывать этот метод‚ пока не будет найден победитель или не закончатся свободные ячейки на поле. def start(self)⁚
while True⁚
self.display_board
self.make_move
winner self.check_winner
if winner⁚
print(f’Игрок {winner} победил!’)
break
if all(cell ! ‘ ‘ for row in self.board for cell in row)⁚
print(‘Ничья!’)
break
Теперь‚ для того чтобы сыграть в нашу игру‚ нужно создать объект класса Game и вызвать метод start.game Game
game.start
И вот! У нас есть полностью рабочая игра ″Крестики-нолики″ на языке программирования Python‚ написанная с использованием объектно-ориентированной парадигмы программирования. Я надеюсь‚ что вам понравилось мое руководство‚ и вы сможете насладиться игрой!До новых встреч!Алексей