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])
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())
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."
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)