void map_put_pixel( int fpg, graph, 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.


MAIN_PROGRAM_CDIV

PRIVATE
   int
    fichero1,
    coord_x,
    coord_y,
    color;

BEGIN_PROGRAM

    set_gfx(GFX_AUTODETECT_FULLSCREEN);
    set_mode(m320x200);

    fichero1 = load_fpg("../help.fpg");  // Se carga el fichero de gráficos

    graph=5;
    x=160;
    y=100;
    size=180;

    LOOP{
        coord_x=rand(0, 199);
        coord_y=rand(0, 199);
        color=rand(0, 255);

        // 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_PROGRAM

En el ejemplo, se pone el gráfico número 5 en el centro de la pantalla rotando continuamente; 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().


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