Exemple #1
0
    def policy_moves_cmd(self, args):
        # if the game is already end
        if (self.board.check_game_end_gomoku()[0]):
            self.respond()
            return

        # check if still have the empty points
        if len(GoBoardUtil.generate_legal_moves_gomoku(self.board)) == 0:
            self.respond()
            return

        # use copy board
        cboard = self.board.copy()

        # check policy
        if self.policy_type == "random":
            moves = GoBoardUtil.generate_legal_moves_gomoku(self.board)
            moves_string = []
            for move in moves:
                move_coord = point_to_coord(move, self.board.size)
                move_as_string = format_point(move_coord)
                moves_string.append(move_as_string)
            sorted_moves = ' '.join(sorted(moves_string))
            self.respond("Random {}".format(sorted_moves))
        else:
            policy, moves = PatternUtil.generate_policy_moves(cboard)

            moves_string = []
            for move in moves:
                move_coord = point_to_coord(move, self.board.size)
                move_as_string = format_point(move_coord)
                moves_string.append(move_as_string)

            sorted_moves = ' '.join(sorted(moves_string))
            self.respond(policy + " " + sorted_moves)
Exemple #2
0
    def get_move(self, board, color):
        """
        Run one-player MC simulations to get a move to play
        """
        color = board.current_player
        cboard = board.copy()
        if self.random_simulation:
            moves = GoBoardUtil.generate_legal_moves_gomoku(board)
        else:
            _, moves = PatternUtil.generate_policy_moves(board)

        move_wins = []
        for move in moves:
            wins = self.simulate_move(cboard, move, color)
            move_wins.append(wins)

        return select_best_move(board, moves, move_wins)