void map_put( int fpg, gfx_destino, gfx_origen, x_destino, y_destino )
Descripción:
Pone un gráfico en otro. El gráfico que se va a copiar se denomina gráfico origen y el gráfico destino es en el que se copiará el origen, es decir, esta función permite copiar un gráfico (origen) a otro (destino).
Ambos gráficos deben estar en el mismo fichero. Los parámetros son, por orden, los siguientes:
fichero - Código del fichero con la librería de gráficos que contiene a ambos. 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).
gfx_destino - Código del gráfico en el que se va a poner el otro.
gfx_origen - Código del gráfico que va a ser copiado en el destino.
x_destino, y_destino - Coordenadas dentro del gráfico destino donde se desea poner el gráfico origen. En estas coordenadas es donde se situará el centro (o punto de control número 0) del gráfico origen.
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 x_destino, y_destino, fichero1; BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_FULLSCREEN); set_mode(m320x200); fichero1 = load_fpg("../help.fpg"); // Se carga el fichero de gráficos graph=1; x=160; y=100; LOOP{ x_destino=rand(0, 320); y_destino=rand(0, 200); map_put(fichero1, 1, 100, x_destino, y_destino); angle+=1000; FRAME; } END_PROGRAM
En el ejemplo se pone el gráfico número 1 en el centro de la pantalla.
En cada paso del bucle principal se gira este gráfico y se pone, con la función map_put(), un gráfico número 100 (una bola) dentro del gráfico 1 (el gráfico central).
La función map_xput() es una versión un poco más compleja de la función map_put(), pero con muchas más posibilidades, pues permite, además, poner gráficos rotados, escalados, espejados y transparentes.
Para poner una parte de un gráfico en otro (en lugar de poner el gráfico completo) se debe utilizar la función map_block_copy().
Ver: map_xput() - map_put_pixel() - map_block_copy()