get_point()

get_point(<fichero>, <gráfico>, <número>, <OFFSET x>, <OFFSET y>)

Retorna:

La posición del punto de control (en las variables cuyo offset se indica como los dos últimos parámetros).

Descripción:

Esta función devuelve donde se situó en un gráfico (del fichero 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 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).

Programa ejemplo:
PROGRAM ejemplo_get_point;

GLOBAL
    fichero1;
    punto=1;
    x_punto;
    y_punto;

BEGIN
    fichero1=load_fpg("help\help.fpg");
    put_screen(0, 4);
    graph=101;
    LOOP
        IF (fget_dist(x, y, x_punto, y_punto)<6)
            IF (punto++==50) punto=1; END
        END

        // Cogemos el punto de control
        get_point(fichero1, 4,punto, offset x_punto, offset y_punto);

        angle=fget_angle(x, y, x_punto, y_punto);
        advance(6);
        FRAME;
    END
END


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_angle() (para obtener en la variable angle el ángulo hacia el punto) y advance() (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_dist(), 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()