void change_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.

Se debe tener cuidado con ella, pues todos los colores de dicha imagen se cambiaran por el valor indicado y no habrá forma de recuperar los valores anteriores a no ser que se haga la función a la inversa y aun así no se asegura que el resultado sea el mismo (imaginemos que  tenemos una imagen de dos colores rojo y verde, aplicamos a esta imagen la función "change_color(makecol(255,0,0), makecol(0,255,0))" cambiar el color rojo por el color verde entonces la imagen será verde totalmente por lo que no habrá forma de recuperarla a no ser que se  vuelva a cargar la imagen).

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

    //Bucle de espera
    LOOP
    {
     if( key(_space) )
     {
      new_color = makecol(rand(0, 255), rand(0, 255), rand(0, 255));
      change_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: invert_color() - load_pal() - fade() - fade_off() - fade_on()