class Game: def __init__(self, player_x, player_o, players_interface): self.grid = Grid() self.player_x = player_x self.player_o = player_o self.pi = players_interface self.current_player = None self.current_player = player_x def get_switched_player(self): return self.player_o if self.current_player == self.player_x else self.player_x def play(self): (row, col) = self.pi.choose_cell(self.current_player, self.player_x, self.player_o, self.grid) if self.grid.is_empty(row, col): self.grid.fill( player=self.current_player, row=row, col=col ) else: raise BadCellError(self.current_player, row, col) self.current_player = self.get_switched_player() def get_winner(self): return self.grid.get_winner() def is_won(self): return True if self.grid.get_winner() is not None else False
def test_cells_can_be_filled(self): grid = Grid() player = Player('test') grid.fill(player, 1, 1) self.assertFalse(grid.is_empty()) self.assertEqual(player, grid.cells[1][1].player)
def test_is_empty_can_take_args_for_cell_emptiness(self): player = Player('test') grid = Grid() grid.fill(player, 0, 2) self.assertTrue(grid.is_empty(0, 1)) self.assertFalse(grid.is_empty(0, 2))