Spaces:
Running
on
Zero
Running
on
Zero
File size: 1,281 Bytes
63f6011 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
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) |