Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Cell:
- # Клетка, у которой есть:
- # - номер (1–9)
- # - статус (либо сам номер, либо 'X' / 'O')
- def __init__(self, number, status):
- self.number = number
- self.status = status
- class Board:
- # Поле из 9 клеток
- def __init__(self):
- self.cells = []
- for i_cell in range(1, 10):
- # Стартово в каждой клетке хранится её номер
- cell = Cell(i_cell, i_cell)
- self.cells.append(cell)
- def print_board(self):
- # Печатаем 3×3 доску
- for cell in self.cells:
- # Если клетка не крайняя в строке, выводим с " |"
- if cell.number % 3 != 0:
- print(f' {cell.status} |', end='')
- else:
- # Крайний столбец, печатаем и перехід на новую строку
- print(f' {cell.status} ')
- print('------------')
- def end_of_game(self, view):
- # Собираем все 8 возможных линий-побед
- lines = [
- [self.cells[0].status, self.cells[1].status, self.cells[2].status],
- [self.cells[3].status, self.cells[4].status, self.cells[5].status],
- [self.cells[6].status, self.cells[7].status, self.cells[8].status],
- [self.cells[0].status, self.cells[3].status, self.cells[6].status],
- [self.cells[1].status, self.cells[4].status, self.cells[7].status],
- [self.cells[2].status, self.cells[5].status, self.cells[8].status],
- [self.cells[0].status, self.cells[4].status, self.cells[8].status],
- [self.cells[2].status, self.cells[4].status, self.cells[6].status],
- ]
- # 1 — победа текущего игрока
- if [view] * 3 in lines:
- return 1
- # 2 — ничья, если ни одной клетке не осталось числа
- elif all(isinstance(cell.status, str) for cell in self.cells):
- return 2
- # 0 — игра продолжается
- else:
- return 0
- class Player:
- # У игрока есть имя и знак ('X' или 'O')
- def __init__(self, name, view):
- self.name = name
- self.view = view
- def go(self, board, number):
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement