コード例 #1
0
ファイル: game.py プロジェクト: AndreasHae/tictactoe-py
class Game:
    def __init__(self):
        self.__player_gen = player_generator()
        self.__next_player = next(self.__player_gen)
        self.__field = Field()

    def turn(self, row, col):
        assert row < 3 and row >= 0
        assert col < 3 and col >= 0
        assert self.__field.get(row, col) == None

        self.__field.place(row, col, self.__next_player)
        self.__next_player = next(self.__player_gen)

    @property
    def winner(self):
        return self.__field.get_winner()

    @property
    def next_player(self):
        return self.__next_player
コード例 #2
0
ファイル: test_field.py プロジェクト: AndreasHae/tictactoe-py
class FieldTest(unittest.TestCase):
    def setUp(self):
        self.field = Field()

    def test_place(self):
        player = 'X'

        self.field.place(0, 0, player)
        cell = self.field.get(0, 0)

        self.assertEqual(player, cell)

    def test_get_winner_horiz(self):
        winner = 'X'

        for row in range(3):
            self.field.place(row, 0, winner)

        self.assertEqual(winner, self.field.get_winner())

    def test_get_winner_vert(self):
        winner = 'X'

        for col in range(3):
            self.field.place(0, col, winner)

        self.assertEqual(winner, self.field.get_winner())

    def test_get_winner_diag_from_top_left(self):
        winner = 'X'

        for i in range(3):
            self.field.place(i, i, winner)

        self.assertEqual(winner, self.field.get_winner())

    def test_get_winner_diag_from_bot_left(self):
        winner = 'X'

        self.field.place(2, 0, winner)
        self.field.place(1, 1, winner)
        self.field.place(0, 2, winner)

        self.assertEqual(winner, self.field.get_winner())