• Sábado 21 de Diciembre de 2024, 11:00

Autor Tema:  Problema con un code  (Leído 1701 veces)

vojok

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Problema con un code
« en: Lunes 26 de Julio de 2010, 04:47 »
0
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

Código: C++
  1.  
  2. #include <allegro.h>
  3. #include <iostream.h>
  4.  
  5. int iniciar ()
  6. {
  7.     allegro_init();
  8.     install_keyboard();
  9.     set_color_depth(16);
  10.     if(set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0) < 0 )
  11.     {
  12.        cout<<"Error al iniciar modo grafico"<<endl;
  13.        allegro_exit();
  14.        exit(-1);
  15.     }
  16. }
  17.  
  18. void terminar()
  19. {
  20.      allegro_exit();
  21. }
  22.  
  23. void realizar_juego()
  24. {
  25.      BITMAP *nave;
  26.      BITMAP *buffer;
  27.      int x,y, x_anterior,y_anterior;
  28.      
  29.      nave=load_bitmap("C:/nave.bmp",0);
  30.  
  31.      if(nave==NULL)terminar();
  32.      
  33.      buffer=create_bitmap(nave->w,nave->h);   //Que es lo que hace el create_bitmap?
  34.      clear(buffer);
  35.      if(buffer==NULL)terminar();
  36.      
  37.      x=SCREEN_W/2;
  38.      y=SCREEN_H/2;
  39.      
  40.      
  41.     while(!key[KEY_ESC])
  42. {
  43.    
  44.     if(key[KEY_UP])
  45.     {
  46.         y--;
  47.     }
  48.    
  49.     if(key[KEY_DOWN])
  50.     {
  51.         y++;
  52.     }
  53.    
  54.     if(key[KEY_RIGHT])
  55.     {
  56.         x++;
  57.     }
  58.    
  59.     if(key[KEY_LEFT])
  60.     {
  61.         x--;
  62.     }
  63.    
  64.     if(x<0) x=x_anterior;
  65.     if(x>SCREEN_W-nave->w) x=x_anterior;
  66.     if(y<0)y=y_anterior;
  67.     if(y>SCREEN_H-nave->h) y=y_anterior;
  68.  
  69. //Aca viene el problemon que no se que hace esto
  70.     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?
  71.     {
  72.        blit(buffer,screen,0,0,x_anterior,y_anterior,buffer->w,buffer->h); // aca ya estoy perdido xq no se que hace esta funcion
  73.        draw_sprite(screen,nave,x,y); //aca dibuja el sprite en pantalla verdad?
  74.     }
  75.     x_anterior=x;
  76.     y_anterior=y;
  77. }
  78.  
  79. }
  80.  
  81. int main()
  82. {
  83.     iniciar();  
  84.     realizar_juego();
  85.     terminar();
  86. }
  87. END_OF_MAIN()
  88.  
  89.  

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.