map_put_pixel()

map_put_pixel(<fichero>, <gráfico>, <x>, <y>, <color>)

Descripción:

Permite modificar 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 cuyo <color> se quiere establecer.

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).

Esta función modificará el gráfico indicado, pero sólo la copia del mismo que se ha cargado en la memoria del ordenador. El gráfico original, que está en el archivo FPG, MAP o PCX del disco, permanecerá inalterado. Por ello si se quiere en un momento del juego recuperar el estado original del gráfico se tiene que descargar de memoria (con unload_fpg(), unload_map() o unload_pcx()) y después volverlo a cargar.

Programa ejemplo:
PROGRAM ejemplo_map_put_pixel;
PRIVATE
    fichero1;
    coord_x;
    coord_y;
    color;

BEGIN
    fichero1=load_fpg("help\help.fpg");
    graph=5;
    x=160;
    y=100;
    size=180;
    LOOP
        coord_x=rand(0, 199);
        coord_y=rand(0, 199);
        color=rand(0, 15);

        // Se ponen puntos en el gráfico número 5 del fichero1
        map_put_pixel(fichero1, 5, coord_x, coord_y, color);

        angle+=2000;
        FRAME;
    END
END


En el ejemplo, se pone el gráfico número 5 en el centro de la pantalla rotando contínuamente; este gráfico es un fondo completamente negro, por ello inicialmente no se verá nada en pantalla.

Pero después, en cada paso del bucle se ponen en él puntos de un color elegido al azar entre el 0 y el 15 (grises) en unas coordenadas también elegidas al azar.

Estos puntos se ponen usando la función map_put_pixel().

Se puede observar cómo parece que hay cada vez más puntos girando en pantalla cuando, en realidad, lo único que gira es el gráfico número 5.


Para poner un gráfico completo en otro, y no sólo en un punto, se pueden utilizar las funciones map_put() o map_xput(), y para poner sólo una parte de un gráfico en otro se puede utilizar la función map_block_copy().


Nota: Cuando se utilice la función map_put_pixel() para poner un punto en un gráfico que se está utilizando como fondo de una ventana de scroll, puede que el punto puesto no aparezca de forma inmediata en pantalla; para solventar este problema se debe utilizar la función refresh_scroll().


Ver: map_put() - map_xput() - refresh_scroll() - map_block_copy()