void get_real_point( int número, int * x, int * y )
Descripción:
Esta función devuelve donde está en ese instante un punto de control del gráfico del proceso actual en el sistema de coordenadas utilizado por el propio proceso (ver variable local ctype), evaluando la ubicación original del punto, las coordenadas actuales del proceso, su tamaño, ángulo, etc.
Un punto de control es un punto que se puede definir en el editor de gráficos (herramienta de dibujo), en la opción habilitada para dicha función.
La función necesita la dirección (que se obtiene con el operador OFFSET) en la memoria del ordenador de dos variables en las que devolverá la posición x e y del punto de control.
Los gráficos cargados con las funciones load_map() o load_pcx() (o creados con new_map()) se utilizarán como si pertenecieran al primer fichero (el fichero con el código 0).
PROCESS( proceso_marcador )(int _x, int _y, int _graph) BEGIN_INIT x=_x; y=_y; graph=_graph; END_INIT BEGIN FRAME; END MAIN_PROGRAM_CDIV PRIVATE int punto, x_punto, y_punto; BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m320x200); punto = 1; load_fpg("../help.fpg"); graph=4; x=160; y=100; z=1; LOOP{ for(punto = 1; punto < 50; punto++){ get_real_point(punto, &x_punto, &y_punto); new proceso_marcador(x_punto, y_punto, 200); } angle+=1000; FRAME; } END_PROGRAM
En el ejemplo se define cómo gráfico del proceso principal un circuito que recorre la pantalla. Este gráfico tiene definidos 50 puntos de control (del 1 al 50).
El programa se queda en un bucle dentro del cual va rotando este gráfico (sumándole un grado con la sentencia angle+=1;) y creando 50 procesos en forma de cruz, una en cada uno de los puntos de control del gráfico.
Se puede comprobar cómo la posición relativa de los puntos de control no varía aunque el gráfico del circuito rote.
Esta función se suele utilizar para tener localizados algunos puntos importantes de un gráfico. Por ejemplo, si se ha definido un proceso cuyo gráfico es un hombre con una pistola que pueda escalarse, rotarse o realizar diversas animaciones, podría definirse un punto de control en la punta del cañón de la pistola para saber en cada momento de dónde deben salir las balas en caso de que dispare.
Si el gráfico original estaba dentro de una región de scroll (ver start_scroll()) las coordenadas devueltas también serán relativas a dicha región de scroll.
La función get_point() devuelve dónde fue emplazado originalmente un punto de control en el gráfico, en lugar de su posición actual, como get_real_point().