Example #1
0
 def test_game_state_returns_stones_sown_on_opponents_side_player_two(self):
     player_number = 1
     pot_number = 4
     board_log = [[[0, 2, 1, 0, 2, 9], [0, 0, 0, 3, 8, 8], [4, 11]], [[0, 2, 1, 0, 2, 9], [0, 0, 0, 0, 9, 9], [4, 12]]]
     gets_extra_turn = True
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["stones_sown_on_opponents_side"] == 0
Example #2
0
 def test_game_state_returns_if_final_turn(self):
     player_number = 0
     pot_number = 2
     board_log = [[[4, 4, 4, 4, 4, 4], [4, 4, 4, 4, 4, 4], [0, 0]],
                  [[4, 4, 0, 5, 5, 5], [4, 4, 4, 4, 4, 4], [1, 0]]]
     gets_extra_turn = True
     is_game_over = True
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["is_final_turn"] == True
Example #3
0
 def test_game_state_returns_stones_captured_for_player_two(self):
     player_number = 1
     pot_number = 0
     board_log = [[[2, 7, 3, 7, 8, 1], [13, 0, 3, 2, 1, 0], [14, 21]],
                  [[3, 8, 4, 8, 9, 0], [0, 1, 4, 3, 2, 1], [14, 24]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["stones_captured"] == 3
Example #4
0
 def test_game_state_returns_kroos_on_opponents_side_index_end(self):
     player_number = 0
     pot_number = 2
     board_log = [[[25, 15, 13, 3, 16, 9], [12, 27, 8, 23, 16, 0], [0, 0]],
                  [[26, 16, 0, 4, 17, 10], [13, 28, 9, 0, 17, 1], [26, 0]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["kroos_on_opponents_side_index_end"] == [1, 2, 3, 5]
Example #5
0
 def test_game_state_returns_score_difference_at_end_from_whole_board(self):
     player_number = 0
     pot_number = 5
     board_log = [[[4, 1, 1, 4, 0, 4], [0, 4, 4, 0, 4, 0], [23, 14]],
                  [[4, 1, 1, 4, 0, 0], [1, 5, 5, 0, 4, 0], [24, 14]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["score_difference_at_end_whole_board"] == 5
Example #6
0
 def test_game_state_returns_stones_on_opponents_side_at_end(self):
     player_number = 0
     pot_number = 5
     board_log = [[[5, 3, 16, 2, 0, 4], [0, 19, 3, 8, 0, 2], [16, 18]],
                  [[5, 3, 16, 2, 0, 0], [1, 20, 4, 8, 0, 2], [17, 18]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["stones_on_opponents_side_at_end"] == 35
Example #7
0
 def test_game_state_returns_current_winning_player_from_whole_board_analysis_when_draw(self):
     player_number = 0
     pot_number = 5
     board_log = [[[4, 1, 1, 4, 0, 4], [0, 4, 4, 0, 40, 0], [23, 14]],
                  [[4, 1, 1, 4, 0, 0], [1, 5, 5, 0, 9, 0], [24, 14]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["current_winning_player_whole_board"] == "draw"
Example #8
0
 def test_game_state_returns_current_winning_player_when_there_is_a_draw(self):
     player_number = 0
     pot_number = 5
     board_log = [[[4, 1, 1, 4, 0, 1], [0, 4, 4, 0, 4, 0], [23, 24]],
                  [[4, 1, 1, 4, 0, 0], [0, 4, 4, 0, 4, 0], [24, 24]]]
     gets_extra_turn = True
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["current_winning_player"] == "draw"
Example #9
0
 def test_game_state_returns_stones_sown_on_opponents_side_when_there_are_fewer_stones(self):
     player_number = 0
     pot_number = 5
     board_log = [[[4, 1, 1, 4, 0, 4], [0, 4, 4, 0, 4, 0], [0, 0]],
                  [[4, 1, 1, 4, 0, 0], [1, 5, 5, 0, 4, 0], [1, 0]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["stones_sown_on_opponents_side"] == 3
Example #10
0
 def test_game_state_returns_stones_sown_on_opponents_side_player_one(self):
     player_number = 1
     pot_number = 3
     board_log = [[[25, 15, 0, 3, 16, 9], [13, 27, 8, 23, 16, 0], [0, 0]],
                  [[27, 17, 2, 5, 18, 11], [15, 2, 11, 25, 18, 2], [0, 2]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["stones_sown_on_opponents_side"] == 12
Example #11
0
 def test_game_state_returns_stones_sown_on_own_side_when_a_turn_loops_around(self):
     player_number = 0
     pot_number = 2
     board_log = [[[4, 4, 16, 4, 4, 4], [4, 4, 4, 4, 4, 4], [0, 0]],
                  [[5, 5, 1, 6, 6, 6], [5, 5, 5, 5, 5, 5], [1, 0]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["stones_sown_on_own_side"] == 9
Example #12
0
 def test_game_state_returns_stones_sown_on_own_side(self):
     player_number = 0
     pot_number = 3
     board_log = [[[4, 0, 0, 4, 0, 4], [0, 4, 4, 0, 4, 0], [0, 0]],
                  [[4, 0, 0, 0, 1, 5], [1, 4, 4, 0, 4, 0], [1, 0]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["stones_sown_on_own_side"] == 2
Example #13
0
 def test_game_state_returns_opponent_score(self):
     player_number = 0
     pot_number = 5
     board_log = [[[4, 1, 1, 4, 0, 4], [0, 4, 4, 0, 4, 0], [23, 14]],
                  [[4, 1, 1, 4, 0, 0], [1, 5, 5, 0, 4, 0], [24, 14]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["opponent_score"] == 14
Example #14
0
 def test_game_state_returns_stones_captured_for_player_one(self):
     player_number = 0
     pot_number = 2
     board_log = [[[4, 4, 4, 4, 4, 4], [4, 4, 4, 4, 4, 4], [0, 0]],
                  [[4, 4, 0, 5, 5, 5], [4, 4, 4, 4, 4, 4], [1, 0]],
                  [[4, 4, 0, 0, 6, 6], [5, 5, 4, 4, 4, 4], [2, 0]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["stones_captured"] == 1
Example #15
0
 def test_game_state_returns_empty_pots_on_opponents_side(self):
     player_number = 0
     pot_number = 3
     board_log = [[[4, 0, 0, 4, 0, 4], [0, 4, 4, 0, 4, 0], [0, 0]],
                  [[4, 0, 0, 0, 1, 5], [1, 4, 4, 0, 4, 0], [1, 0]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["empty_pots_on_opponents_side_start"] == [1, 4, 6]
     assert result["empty_pots_on_opponents_side_end"] == [4, 6]
Example #16
0
 def test_game_state_returns_number_of_moves_available_on_opponents_side_at_start(self):
     player_number = 0
     pot_number = 3
     board_log = [[[4, 0, 0, 4, 0, 4], [0, 4, 4, 0, 4, 0], [0, 0]],
                  [[4, 0, 0, 0, 1, 5], [1, 4, 4, 0, 4, 0], [1, 0]]]
     gets_extra_turn = False
     is_game_over = False
     result = game_state.get_game_state(player_number, pot_number, board_log, gets_extra_turn, is_game_over)
     assert result["moves_available_on_opponents_side_at_start"] == [2, 3, 5]
     assert result["moves_available_on_opponents_side_at_end"] == [1, 2, 3, 5]
    def move(self):
        # This function is called on every turn of a game. It's how your snake decides where to move.
        # Valid moves are "up", "down", "left", or "right".
        # TODO: Use the information in cherrypy.request.json to decide your next move.
        data = cherrypy.request.json
        board_setup = game_state.get_game_state(data)
        print(board_setup)

        # Choose a random direction to move in
        possible_moves = ["up", "down", "left", "right"]
        move = random.choice(possible_moves)

        print(f"MOVE: {move}")
        return {"move": move}
Example #18
0
    def play(self, player_number, pot_number):
        self.check_player_turn_number(player_number)

        player_number = player_number - 1
        pot_number = pot_number - 1
        self.validate_turn(player_number, pot_number)

        turn = self.generate_turn(player_number, pot_number)
        self.game_board_log.append(turn[0])
        self.check_for_game_over(turn[0])
        gets_extra_turn = self.check_for_extra_turn(turn[1])

        if len(self.game_board_log
               ) > 1:  # If not the initial board set up, add state
            new_game_state = game_state.get_game_state(
                player_number, pot_number, self.game_board_log,
                gets_extra_turn, self.game_is_over, self.game_number)
            self.game_state_log.append(new_game_state)

        if self.game_is_over == True:
            return False
        else:
            return gets_extra_turn