/
sejeenn
/
python_basic
Обзор
Документация
Войти
/
sejeenn
/
python_basic
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Module24/09_tic-tac-toe/main.py
58 строк
2 KB
Eugene Vorontsov
Copy repo python basic
03 фев 2025, 20:23
03 фев 2025, 20:23
a8fce4a
Код
Авторство
О чём код?
class Board: def __init__(self): self.cells = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] self.win_coordinates = [(0, 1, 2), (3, 4, 5), (6, 7, 8), (0, 3, 6), (1, 4, 7), (2, 5, 8), (0, 4, 8), (2, 4, 6)] self.count = 0 def display(self): print(' %s | %s | %s ' % (self.cells[0], self.cells[1], self.cells[2])) print('-----------') print(' %s | %s | %s ' % (self.cells[3], self.cells[4], self.cells[5])) print('-----------') print(' %s | %s | %s ' % (self.cells[6], self.cells[7], self.cells[8])) def update_cell(self, cell_number, player): self.cells[cell_number - 1] = player def check_used_cells(self, cell_number): if self.cells[cell_number - 1] not in '123456789': print('Данная клетка уже занята!') return True def check_win(self): for variant in self.win_coordinates: if self.cells[variant[0]] == self.cells[variant[1]] == self.cells[variant[2]]: return True class Player: def __init__(self, name, symbol): self.name = name self.symbol = symbol def run(self, name): while True: board.display() choice = int(input('\n{} Делайте выбор от 1 до 9: '.format(self.name))) if board.check_used_cells(choice): continue else: board.update_cell(choice, self.symbol) board.count += 1 if board.check_win(): print('Победил игрок {}!'.format(name)) board.display() return True elif board.count > 8: print('Ничья!') return True break board = Board() gamer_x = Player('John', 'X') gamer_o = Player('Smith', 'O') while True: if gamer_x.run(gamer_x.name) or gamer_o.run(gamer_o.name): break