SoloCodigo

Programación Específica => Programación de Videojuegos => Allegro => Mensaje iniciado por: palpatine16 en Domingo 5 de Marzo de 2006, 19:52

Título: Imagen Como Cursor Del Raton
Publicado por: palpatine16 en Domingo 5 de Marzo de 2006, 19:52
wenas!!! yo quiero poner una imagen como cursor del raton, pero el problema esta en que parpadea y desaparece si no lo muevo, como se soluciona esto???

el codigo hasta ahora es:
Código: Text
  1.  
  2.  
  3. #include <allegro.h>
  4.  
  5. BITMAP*buf;
  6. BITMAP*fondo;
  7. BITMAP*nave;
  8.  
  9. int x,y;
  10.  
  11. void init(){
  12.      allegro_init();
  13.      set_color_depth(24);
  14.      set_window_title("Star Wars Invaders v. 1.0");
  15.      set_gfx_mode(GFX_AUTODETECT_WINDOWED,320,240,0,0);
  16.      install_timer();
  17.      install_keyboard();
  18.      install_mouse();  
  19. }
  20. void juego_raton(){
  21.      show_mouse(screen);
  22.      buf=create_bitmap(320,240);
  23.      fondo=load_bmp("fondo.bmp",0);
  24.      nave=load_bmp("nave.bmp",0);
  25.      set_mouse_range(0,0,320,240);
  26.      set_mouse_speed(2,2);
  27.      set_mouse_sprite(nave);
  28.      while(!key[KEY_ESC]){
  29.                           blit(buf, screen,0,0,0,0,320,240);
  30.                           clear(buf);
  31.                           draw_sprite(buf, fondo,0,0);
  32.       }
  33.  
  34. }
  35. void juego_teclado(){
  36.      x=140;
  37.      y=195;
  38.      char*w="x";
  39.      char*z="y";
  40.      buf=create_bitmap(320,240);
  41.      fondo=load_bmp("fondo.bmp",0);
  42.      nave=load_bmp("nave.bmp",0);
  43.      
  44.      
  45.      while(!key[KEY_ESC]){
  46.                          
  47.                           //movimiento de la nave
  48.                           if(key[KEY_LEFT]){
  49.                                             x=x-4;
  50.                                             }
  51.                           if(key[KEY_RIGHT]){
  52.                                              x=x+4;
  53.                                              }
  54.                           if(key[KEY_UP]){
  55.                                           y=y-4;
  56.                                           }
  57.                           if(key[KEY_DOWN]){
  58.                                             y=y+4;
  59.                                             }
  60.                                            
  61.                            //Universo donuts                
  62.                           if(x<=0){
  63.                                    x=0;
  64.                                    }
  65.                           if(x>=280){
  66.                                      x=280;
  67.                                      }
  68.                           if(y<=0){
  69.                                    y=0;
  70.                                    }
  71.                           if(y>=195){
  72.                                      y=195;
  73.                                      }
  74.                           blit(buf, screen,0,0,0,0,320,240);
  75.                           clear(buf);
  76.                           draw_sprite(buf, fondo,0,0);
  77.                           draw_sprite(buf, nave, x,y);
  78.                          
  79.      }
  80.                           textout_ex(screen, font,10, 230, makecol(255,255,255),-1,"%s,%d",w,x);          
  81. }
  82.  
  83. void intro(){
  84.      textout_ex(screen, font, "Star Wars invaders", 90, 100, makecol(255, 255, 255), -1);
  85.      textout_ex(screen, font, "Selecciona teclado (t) o raton (r)", 70, 170, makecol(255, 255, 255), -1);
  86.      textout_ex(screen, font, "Para salir pulsa Esc", 87, 190, makecol(255, 255, 255), -1);
  87.      while(!key[KEY_ESC]){
  88.                           if(key[KEY_T]){
  89.                                              juego_teclado();                    
  90.                                              }
  91.                           if(key[KEY_R]){
  92.                                              juego_raton();                    
  93.                                              }                        
  94.                           }
  95.      
  96.      
  97. }
  98.  
  99.  
  100. int main(){
  101.     init();
  102.     intro();
  103. }
  104.  
  105. END_OF_MAIN()
  106.  
  107.  
  108.  

El teclado funciona bien pero el raton parpadea. Y otra cosa, hay alguna forma de centrar el texto en la pantalla???? porque acerlo a ojo...

Y otra cosa más, como puedo poner las coordenadas en la que se encuentra la nave tanto en teclado como en ratón??? porque lo probe con textprintf(....) pero parpadeaba..

saludos

Gracias
Título: Re: Imagen Como Cursor Del Raton
Publicado por: ibito en Lunes 6 de Marzo de 2006, 20:24
Intenta mostrar el raton después de dibujar en la pantalla (blit(buffer blablabla)),
esto lo puedes hacer antes de llamar la funcion blit, haces un
Código: Text
  1.  
  2. show_mouse(null);
  3.  
  4.  

y despues del blit
Código: Text
  1.  
  2. show_mouse(screen);
  3.  
  4.