get_id()

get_id(<tipo de proceso>)

Retorna:

El código identificador de un proceso o 0.

Descripción:

Comprueba si hay procesos del tipo especificado activos. En caso afirmativo, esta función devolverá el código identificador de uno de ellos y, en el caso contrario, devolverá un 0.

Si existen varios procesos del tipo que se ha especificado, la función get_id() devolverá el resto de los identificadores en las sucesivas llamadas que se realicen a la misma.

Una vez se hayan devuelto todos los códigos identificadores, la función devolverá 0, hasta que se vuelva a ejecutar una sentencia FRAME, momento a partir del cual esta función devolverá, de nuevo, todos los códigos identificadores de los procesos del tipo indicado.

Para obtener de esta forma todos los códigos identificadores de los procesos no se debe utilizar la sentencia FRAME entre dos llamadas consecutivas a la sentencia get_id(). En el caso de ejecutar una sentencia FRAME, esta función volverá a retornar todos los códigos identificadores de procesos desde el primero.

Algo similar sucede si se ejecuta una llamada a la función especificando un tipo de proceso diferente; si tras esto se vuelven a pedir identificadores del tipo de proceso anterior, esta función también los volverá a retornar todos desde el primero.

Programa ejemplo:
PROGRAM ejemplo_get_id;

PRIVATE
    identificador_proceso;
    contador;

BEGIN
    load_fpg("help\help.fpg");
    put_screen(0, 1);
    FROM contador=1 TO 20;
        proceso_móvil(rand(0, 319), rand(0, 199), 101);
    END
    LOOP
        FROM contador=1 TO 20;

            // Cogemos los identificadores de los procesos
            identificador_proceso = get_id(TYPE proceso_móvil);

            identificador_proceso.angle+=rand(-5000, 5000);
        END
        FRAME;
    END
END

PROCESS proceso_móvil(x, y, graph);
BEGIN
    LOOP
        FRAME;
    END
END


En el ejemplo, después de cargar el fichero de gráficos y poner la pantalla de fondo, se crean 20 procesos tipo proceso_móvil con sus posiciones elegidas aleatoriamente y un triángulo como su gráfico.

Estos procesos únicamente ejecutarán sentencias FRAME dentro de un bucle, para visualizarse.

Desde el programa principal se van cogiendo los identificadores de los procesos tipo proceso_móvil con la función get_id() (guardándolos en la variable identificador_proceso) y utilizándolos para modificarles el ángulo (su variable local angle).

Al disponer del código identificador de un proceso se pueden consultar o modificar sus variables locales (como angle en este ejemplo) o bien enviar señales al proceso con la función signal().


La función collision() sirve para obtener los códigos identificadores de procesos de un tipo determinado que, además, colisionen (choquen) con el proceso actual.


Ver: Formas de obtener el código identificador - Tipos de procesos - Códigos identificadores