Tipos de procesos

Los bloques de los programas que comienzan con la palabra reservada PROCESS determinan el comportamiento de un tipo concreto de proceso. Después, cuando se ejecute el programa podrá haber cualquier número de procesos de dicho tipo en un momento determinado, cada uno con un código identificador diferente pero todos del mismo tipo.

Ejemplo:
PROGRAM mi_juego;
BEGIN
    // ...
END
PROCESS nave()
BEGIN
    // ...
END
PROCESS enemigo()
BEGIN
    // ...
END
PROCESS disparo()
BEGIN
    // ...
END


En este ejemplo se definen cuatro tipos de procesos, mi_juego (que será el tipo del proceso inicial del programa}, nave, enemigo y disparo.

El número de procesos de cada uno de estos tipos que haya después en el juego depende del número de llamadas que se realicen a dichos procesos.

Todos los procesos de tipo nave ejecutarán siempre las sentencias que se definen en el bloque PROCESS nave() del programa.

Un "tipo de proceso" es un código numérico que hace referencia al nombre que tiene el PROCESS que determina el comportamiento del proceso durante el juego; este código numérico se puede obtener con: TYPE <nombre_del_proceso>

TYPE es un operador definido en el lenguaje que, aplicado a un nombre de proceso, devuelve este código numérico.

Por ejemplo, TYPE nave equivaldrá a una constante numérica determinada y TYPE enemigo a otra.

Todos los procesos tienen una variable local que contiene este código numérico y es: reserved.process_type.

¿Para qué sirve el tipo de un proceso?


El tipo de los procesos se emplea para varias cosas, por ejemplo:

- Para la función get_id() que recibe como parámetro un tipo de proceso (por ejemplo, get_id(TYPE enemigo)) y devuelve los códigos identificadores de los procesos de dicho tipo que existan en el juego en ese momento.

- Para la función collision() es similar a la anterior sólo que devuelve los códigos identificadores de los procesos con los que se esté colisionado (chocando, es decir, que los gráficos de ambos procesos estén parcialmente superpuestos).

- Para la función signal() que puede enviar una señal a todos los procesos que existan de un tipo determinado.

- O bien para, a partir de un código identificador de un proceso, poder comprobar de qué tipo de proceso se trata (si es de tipo nave, de tipo disparo, etc.).


El operador TYPE puede utilizarse únicamente precediendo a un nombre de proceso del programa o a la palabra mouse, para la detección de colisiones con el puntero del ratón (con collision(TYPE mouse)).


Ver: Códigos identificadores de procesos