Example #1
0
    def test_available_moves(self):
        """
        Tests that valid moves are returned when queried especially after
        a move has been made.
        """
        GameStateTest.G.add_edge(0, 1)
        state = GameState(GameStateTest.G)
        self.assertEquals(state.get_available_moves(), [0, 1, 2])

        state.make_move(0)
        state.alternate_turn()
        self.assertEquals(state.get_available_moves(), [2])
Example #2
0
    def test_terminal_state(self):
        """Tests proper terminal state."""
        GameStateTest.G.add_edge(0, 1)
        GameStateTest.G.add_node(3)
        GameStateTest.G.add_edge(2, 3)
        state = GameState(GameStateTest.G)

        self.assertEquals(state.turn, labels.RED)
        state.make_move(0)
        state.alternate_turn()
        state.make_move(2)

        self.assertFalse(state.is_gameover())
        self.assertTrue(state.is_terminal())
Example #3
0
class REPL(object):
    def __init__(self):
        n = input("Number of vertices: ")
        p = input("Edge probability: ")
        color = raw_input("Select your color (R/B): ")
        G = nx.erdos_renyi_graph(n, p)
        self.state = GameState(G)

        if color == 'R':
            self.red = player.HumanPlayer(labels.RED)
            self.blue = player.BotPlayer(labels.BLUE)
        else:
            self.red = player.BotPlayer(labels.RED)
            self.blue = player.HumanPlayer(labels.BLUE)

        print os.linesep, 'GAME HAS BEGUN', os.linesep

        plt.ion()
        plt.axis('off')
        plt.show()

    def error(self, e):
        print e

    def run(self):
        while not self.state.is_gameover():
            plt.clf()
            self.state.draw()
            try:
                if self.state.turn is labels.RED:
                    move = self.red.get_move(self.state)
                else:
                    move = self.blue.get_move(self.state)
                if move is None:
                    print move, 'is none'
                self.state.make_move(move)
                self.state.alternate_turn()
                plt.draw()
            except GameoverException, e:
                break
        winner = self.state.winner
        print winner, "is the winner."
Example #4
0
    def test_normal_play(self):
        """Tests a normal game."""
        state = GameState(GameStateTest.G)

        self.assertEquals(state.turn, labels.RED)
        state.make_move(0)
        self.assertFalse(state.check_gameover)
        state.alternate_turn()

        self.assertEquals(state.turn, labels.BLUE)
        state.make_move(1)
        self.assertFalse(state.check_gameover)
        state.alternate_turn()

        self.assertEquals(state.turn, labels.RED)
        state.make_move(2)
        self.assertTrue(state.check_gameover)
        state.alternate_turn()

        self.assertEquals(state.turn, labels.BLUE)
        self.assertTrue(state.is_gameover())
        self.assertTrue(state.is_terminal())
        self.assertEquals(state.winner, labels.RED)