void invert_color( int fpg, graph, int color_inicial, color_final )


Descripción:

Redefine un color de una imagen. Esta función sirve para modificar los colores de una imagen sin modificar la paleta del juego, cambiará el color inicial por el color final de dicha imagen y el color final por el color final, si no ha sido cambiado previamente por esta función, es decir, se invierten los colores.

Imaginemos que tenemos una imagen mitad verde y mitad roja, si aplicamos esta función a esta imagen, cambiando el verde por el rojo, la parte verde pasará a ser roja y a la inversa, pudiendo recuperar la imagen original aplicando esta misma función con los colores cambiados.

A continuación se muestra un programa que modifica de forma aleatoria  los colores de la imagen.


int old_color, new_color;

MAIN_PROGRAM_CDIV
BEGIN_PROGRAM 

    //Definimos el modo gráfico
    set_gfx(GFX_AUTODETECT_WINDOWED);

    //Definimos la resolución
    set_mode(m320x200);

    write(0, 0, 0, 0, "[ ESPACIO ] Cambia el color del ratón");

    old_color = makecol(255, 255, 255);
    mouse.graph = new_map(100, 100, 50, 50, old_color);

    LOOP
    {
     if( key(_space) )
     {
      new_color = makecol(rand(0, 255), rand(0, 255), rand(0, 255));
      invert_color(0, mouse.graph, old_color, new_color);
      old_color = new_color;
     }

     FRAME;
    }

END_PROGRAM

En el ejemplo se pone una imagen como puntero del ratón, al pulsar la barra espaciadora se elegirá un color aleatoriamente para cambiar la imagen al color elegido. Para obtener números al azar se utiliza la función rand().


Ver: change_color() - load_pal() - fade() - fade_off() - fade_on()