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.