void get_point( int fpg, gráfico, número, int * x, int * y )
Descripción:
Esta función devuelve donde se situó en un gráfico (del fpg indicado) el punto de control cuyo número se indica como tercer parámetro.
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 &) en la memoria del ordenador de dos variables en las que devolverá la posición x e y del punto de control.
MAIN_PROGRAM_CDIV PRIVATE int fichero1, punto, x_punto, y_punto; BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m320x200); punto = 1; fichero1=load_fpg("../help.fpg"); put_screen(1, 4); graph=101; LOOP{ if (fget_dist2d(x, y, x_punto, y_punto) < 6) if (punto++ == 50) punto=1; // Cogemos el punto de control get_point(fichero1, 4, punto, &x_punto, &y_punto); angle = fget_angle2d(x, y, x_punto, y_punto); advance2d(6); FRAME; } END_PROGRAM
En el ejemplo se pone como fondo un dibujo con un circuito que recorre la pantalla; este dibujo (el gráfico 4 del fichero) tiene definidos 50 puntos de control (del 1 al 50) a lo largo del recorrido del circuito.
El proceso principal aparece como un triángulo que va recorriendo el circuito.
Esto se consigue teniendo en la variable punto el número del punto de control al que se debe dirigir el triángulo, en un principio el punto número 1.
Las coordenadas de cada punto de control, obtenidas con la función get_point(), se guardan en las variables x_punto e y_punto y sirven para que el proceso se dirija hacia esa posición con las funciones fget_angle2d() (para obtener en la variable angle el ángulo hacia el punto) y advance2d() (para avanzar 6 puntos en esa dirección).
Cuando se está cerca del punto de control, lo que se comprueba con la función fget_dist2d(), es si se incrementa el número de punto, para dirigir el triángulo hacia el siguiente (cuando se haya alcanzado el punto número 50, se volverá al 1).
Esta función devuelve las coordenadas exactas en las que fue colocado ese punto de control dentro del gráfico, sin importar cómo esté dicho gráfico ahora (escalado, rotado, etc.). Para poder obtener la posición de un punto de control en un gráfico escalado, rotado, etc. y relativa a las coordenadas de pantalla (y no del gráfico original) se debe emplear la función get_real_point().
Es decir, esta última función devuelve dónde está en un momento determinado un punto de control, y get_point() devuelve dónde fue emplazado originalmente.
Ver: Puntos de control - get_real_point() - get_pixel_screen()