CPROCESS * fcollision_mouse( CPROCESS * identificador )


Retorna:

 El código identificador de un proceso que colisionó o (0) si no hay ningún proceso colisionando.

Descripción:

Ésta es la función del lenguaje para detectar choques entre procesos con el puntero del ratón.

Cuando en el programa se esté visualizando el puntero del ratón (asignando el código del gráfico correspondiente en la estructura mouse), es posible ver si éste choca con el proceso actual utilizando esta función, por ejemplo, de la siguiente forma:

Al detectarse la colisión con el puntero del ratón no se hará con la totalidad del gráfico utilizado como puntero, sino únicamente con el punto de control principal (el número 0) del mismo, denominado usualmente como el "punto caliente" (hotspot) del ratón.


PROCESS_INIT( proceso_movil )(int _x, int _y, int _graph)
 BEGIN_INIT 
  x=_x; y=_y; graph=_graph;
 END_INIT

BEGIN
    LOOP{
        if (key(_right)) angle-=1000;
        if (key(_left)) angle+=1000;
        if (key(_up)) advance2d(4);
        FRAME;
    }
END

MAIN_PROGRAM_CDIV

PRIVATE
    CPROCESS * id2;

BEGIN_PROGRAM
    set_gfx(GFX_AUTODETECT_WINDOWED);
    set_mode(m320x200);

    load_fpg("../help.fpg");
    put_screen(1, 1);

    mouse.graph = 200;
    mouse.x = 160;
    mouse.y = 100;

    id2 = new proceso_movil(80, 50, 101);

    LOOP{
        delete_text(all_text);
        write(0, 160, 0, 1, "Use los cursores para mover el triangulo");

        if( fcollision_mouse(id2) )
            write(0, 160, 200, 7, "­ DETECTADA COLISION !");

        FRAME;
    }
END_PROGRAM

En este ejemplo se visualiza el puntero del ratón, luego se crea un proceso de nombre proceso_movil con el dibujo de un triángulo controlable con las teclas de los cursores.

El programa principal llamará a la función fcollision_mouse() para   comprobar si el puntero del ratón colisiona con el gráfico del proceso (el triángulo).

No es posible utilizar esta función para detectar colisiones con procesos que no tengan gráfico (un código válido asignado a su variable graph).


Ver: get_id() - get_dist2d() - Tipos de procesos - Formas de obtener el código identificador