Los bloques PROCESS

Existen dos tipos de bloques de código (además del código principal): los bloques PROCESS (que se detallan a continuación), y los bloques FUNCTION.

PROCESS <nombre> ( <parámetros> )
<Declaración de datos privados>
BEGIN
    <sentencia> ;
    ...
END

Un proceso debe comenzar con la palabra reservada PROCESS seguida de su nombre y sus parámetros de llamada entre paréntesis. Los parámetros son una lista de datos en los que el proceso va a recibir diferentes valores. Los paréntesis son obligatorios incluso cuando el proceso no tenga parámetros.

Tras esta cabecera puede venir, de forma opcional, una sección PRIVATE donde se declaren datos que va a utilizar exclusivamente el proceso.

Y, por último, se especificará el código para el proceso, que es una secuencia de sentencias entre las palabras reservadas BEGIN y END.

Un proceso se corresponde, normalmente, con un tipo de objeto del juego, como puede ser una nave, una explosion, un disparo, etc., y dentro del código del proceso se suele implementar un bucle dentro del cual se fijarán todos los valores necesarios de visualización de dicho objeto (gráfico, coordenadas, etc.) y después, mediante la sentencia FRAME, se dará la orden para visualizar el objeto con los atributos establecidos.

Ejemplo:
PROGRAM mi_juego;
PRIVATE
    id2;
BEGIN
    id2=mi_proceso(160, 100)
    // ...
END

PROCESS mi_proceso(x, y)
PRIVATE
    n;
BEGIN
    graph=1;
    FROM n=0 to 99;
        x=x+2;
        y=y+1;
        FRAME;
    END
END


Como se puede observar en este ejemplo, cuando se llama a un proceso éste devuelve su código identificador (que en el ejemplo se guarda en la variable PRIVATE del programa principal id2); si se quiere implementar un proceso al estilo de las funciones de otros lenguajes, que devuelva un resultado numérico, entonces se debe utilizar la sentencia RETURN(valor) y no utilizar la sentencia FRAME dentro del proceso, pues ésta retorna al proceso padre (llamante), devolviendo el código identificador del proceso como valor de retorno.


Ver: Sintaxis - Los bloques FUNCTION