path_free()

path_free(<fichero>, <gráfico>, <tamaño casilla>, <x>, <y>)

Retorna:

True (1), si un punto está libre (no es un obstáculo) en un mapa de búsqueda, o false (0) en caso contrario.

Descripción:

Determina si, dentro de un mapa de búsqueda, unas coordenadas están situadas en una zona acesible, fuera de cualquier obstáculo (en el manual de usuario se puede encontrar información sobre estos mapas de búsqueda).

En caso de querer obtener una ruta para sortear los obstáculos entre dos puntos, se debe utilizar la función path_find(), y para ver si se puede ir hasta un punto en línea recta sin atravesar ningún obstáculo la función path_line().

El mapa de búsqueda.

Los códigos de <fichero> y <gráfico> se refieren al mapa de búsqueda. Este es una versión reducida del decorado real, donde se aparecen en color negro (el número 0 de la paleta) las zonas libres y con color blanco los obstáculos del mismo.

Como <tamaño casilla> se indica el factor de reducción del mapa de búsqueda, es decir, por cuanto se tendrían que multiplicar el ancho y alto del mismo para mostrarse a tamaño real. Por ejemplo, si para una pantalla de 320x200 se genera un mapa de búsqueda de 160x100, entonces el tamaño de casilla será 2.

A continuación se deben indicar las coordenadas <x> e <y> a consultar.


Programa ejemplo:
PROGRAM ejemplo_path_free;

BEGIN
    load_fpg("help\help.fpg");
    put_screen(0, 7);
    mouse.graph=200;
    mouse.size=400;
    LOOP

        // Mira si el ratón está en una zona accesible

        IF (path_free(0,201,2,mouse.x,mouse.y))
            mouse.angle+=5000;
        END

        FRAME;
    END
END


En este ejemplo se utiliza el gráfico número 7 del fichero help.fpg como decorado, y el gráfico número 201 del mismo como su mapa de búsqueda. El tamaño de las casillas en el mapa de búsqueda es 2

El proceso principal está continuamente comprobando, con la función path_free(), si el puntero del ratón se encuentra sobre una zona libre, o bien sobre un obstáculo.

Cuando el cursor se encuentre en una zona libre, fuera de cualquier obstáculo, se irá rotando su gráfico.


Ver: path_find() - path_find()