kenken999's picture
test
df50319
raw
history blame
1.28 kB
from dataclasses import dataclass
from enum import Enum
class Player(Enum):
X = 1
O = 2
@dataclass
class GameBoard:
board: list[list[str]]
def __post_init__(self):
self.board = [[' ' for _ in range(3)] for _ in range(3)]
def print_board(self):
for row in self.board:
print(' | '.join(row))
print('---------')
def is_valid_move(self, row, col):
return 0 <= row < 3 and 0 <= col < 3 and self.board[row][col] == ' '
def make_move(self, row, col, player):
if self.is_valid_move(row, col):
self.board[row][col] = 'X' if player == Player.X else 'O'
return True
return False
def check_win(self, player):
for i in range(3):
if self.board[i][0] == self.board[i][1] == self.board[i][2] != ' ':
return True
if self.board[0][i] == self.board[1][i] == self.board[2][i] != ' ':
return True
if self.board[0][0] == self.board[1][1] == self.board[2][2] != ' ':
return True
if self.board[0][2] == self.board[1][1] == self.board[2][0] != ' ':
return True
return False
def is_draw(self):
return all(cell != ' ' for row in self.board for cell in row)