Hola,soy nuevo en el foro y en allegro ,me meti a aprender allegro de un manual de Daniel Acuña y no esta bien explicado por ejemplo utiliza la funcion BLIT pero no la explica y la verdad me quede atorado ahi sin poder avanzar alguien me podria explicar que es lo que hace, y sacarme unas dudas que tengo
#include <allegro.h>
#include <iostream.h>
int iniciar ()
{
allegro_init();
install_keyboard();
set_color_depth(16);
if(set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0) < 0 )
{
cout<<"Error al iniciar modo grafico"<<endl;
allegro_exit();
exit(-1);
}
}
void terminar()
{
allegro_exit();
}
void realizar_juego()
{
BITMAP *nave;
BITMAP *buffer;
int x,y, x_anterior,y_anterior;
nave=load_bitmap("C:/nave.bmp",0);
if(nave==NULL)terminar();
buffer=create_bitmap(nave->w,nave->h); //Que es lo que hace el create_bitmap?
clear(buffer);
if(buffer==NULL)terminar();
x=SCREEN_W/2;
y=SCREEN_H/2;
while(!key[KEY_ESC])
{
if(key[KEY_UP])
{
y--;
}
if(key[KEY_DOWN])
{
y++;
}
if(key[KEY_RIGHT])
{
x++;
}
if(key[KEY_LEFT])
{
x--;
}
if(x<0) x=x_anterior;
if(x>SCREEN_W-nave->w) x=x_anterior;
if(y<0)y=y_anterior;
if(y>SCREEN_H-nave->h) y=y_anterior;
//Aca viene el problemon que no se que hace esto
if ((x_anterior !=x) || (y_anterior!=y)) //aca esta diciendo que si X_anterior no es igual a X que se cumpla lo siguiente NO?
{
blit(buffer,screen,0,0,x_anterior,y_anterior,buffer->w,buffer->h); // aca ya estoy perdido xq no se que hace esta funcion
draw_sprite(screen,nave,x,y); //aca dibuja el sprite en pantalla verdad?
}
x_anterior=x;
y_anterior=y;
}
}
int main()
{
iniciar();
realizar_juego();
terminar();
}
END_OF_MAIN()
Y tambien cuando lo ejecuto que muevo al sprite x pantalla tiene el fondo de color azul (el sprite no la pantalla ) como puedo quitarle o acerle transparente el fonde del sprite con Allegro, y tambien tiene un parpadeo cuando muevo al sprite en pantalla ,alguien me podria explicar por favor como solucionar estas cosas? o me podrian decir algun manual que este bien explicado para poder avanzar en Allegro??
Saludos.