map_get_pixel()

map_get_pixel(<fichero>, <gráfico>, <x>, <y>)

Retorna:

El color del punto (0..255).

Descripción:

Permite obtener, como valor de retorno de la función, el color de un punto determinado de un gráfico. Para ello requiere el <código del fichero> en el que se encuentra el gráfico, el <código del gráfico> dentro del fichero y las coordenadas (x, y) del punto del gráfico cuyo color se quiere obtener.

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_map_get_pixel;

PRIVATE
    fichero1;
    figura;

BEGIN
    fichero1=load_fpg("help\help.fpg");
    put_screen(0, 7);
    mouse.graph=200;
    write(0, 0, 0, 0, "FIGURA:");
    write_int(0, 42, 0, 0, offset figura);
    LOOP

        // Cogemos el color del punto del mapa del bits
        figura = map_get_pixel(fichero1, 8, mouse.x, mouse.y);

        FRAME;
    END
END


En el ejemplo se pone como fondo de pantalla una imagen con 6 figuras geométricas diferentes, todas ellas del mismo color, y el gráfico del ratón se define como una pequeña cruz.

La imagen de fondo se corresponde directamente con otro gráfico, el número 8 del fichero, el cual tiene las mismas figuras aunque cada una de un color diferente (la primera de color 1, la segunda de color 2, etc.).

En el bucle principal se tomará un color de este segundo gráfico con la función map_get_pixel(), de las coordenadas que indique el cursor del ratón.

En la esquina superior izquierda de la pantalla el valor obtenido con la función, que es un número del 1 al 6 que indica el número de figura.


Esta función se suele utilizar para la detección de zonas dentro de gráficos. Esta técnica se denomina mapas de durezas y consiste en utilizar dos gráficos diferentes, uno con el dibujo en sí y otro con las zonas a detectar pintadas de diferentes colores.

Por ejemplo, en un juego de naves se podrían pintar en este mapa de durezas las zonas que le quitan energía a la nave cuando pasa por ellas con un color (por ejemplo, el color 32); después se obtendría el color del mapa de durezas sobre el que está la nave, y si es 32, se le restaría energía.

Es decir, habría dos dibujos diferentes: uno en colores, que es el dibujo de fondo por el que se mueve la nave en el juego (el visible), y otro, el mapa de durezas que se utilizaría únicamente para obtener colores de él con la función map_get_pixel() y, de esta forma, identificar la zona del dibujo original sobre el que está la nave.


Ver: get_pixel() - map_put_pixel()