| Spilner Temat założony przez niniejszego użytkownika | [Allegro] Jak zrobić niemrugającą myszkę z wykorzystaniem bufora ekranu » 2008-07-28 12:03:59 jak zrobić żeby pętla zaczekała while( !key[ KEY_ESC ] ){
 if( x = 100 ) x--;
 
 
 }
gdzie x to np 30 | 
|  | 
| DejaVu | » 2008-07-28 12:10:29 rest( 1000 ); Jeśli nie będzie działało, to znaczy że musisz jeszcze dać chyba install_timer();  albo coś podobnego z allegro. /edit: tak nawiasem mówiąc powinieneś chyba mieć: if( x == 100 ) x--; /edit2: install_timer(); while(...)
 {
 
 rest( 1000 );
 }
 remove_timer();
 
 | 
|  | 
| Spilner Temat założony przez niniejszego użytkownika | » 2008-07-28 12:25:59 #include <allegro.h>
 int main()
 {
 allegro_init();
 install_keyboard();
 install_timer();
 set_color_depth( 8 );
 set_gfx_mode( GFX_AUTODETECT, 800, 600, 0, 0 );
 set_palette( default_palette );
 
 
 install_mouse();
 show_mouse( screen );
 unscare_mouse();
 
 
 rectfill( screen, 20, 550, 770, 580, makecol( 255, 255, 255 ) );
 BITMAP * bufor = NULL;
 BITMAP * klocek = NULL;
 bufor = create_bitmap( 640, 480 );
 if( !bufor )
 {
 set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
 allegro_message( "Nie ma bufora" );
 allegro_exit();
 return 0;
 }
 
 klocek = load_bmp( "klocek.bmp", default_palette );
 if( !klocek )
 {
 
 set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
 allegro_message( "Error" );
 allegro_exit();
 return 0;
 }
 
 int klocek_x = 128, klocek_y = 30;
 while( !key[ KEY_ESC ] )
 {
 if( klocek_y == 550 ) klocek_y++;
 
 clear_to_color( bufor, makecol( 0, 0, 0 ) );
 
 masked_blit( klocek, bufor, 0, 0, klocek_x, klocek_y, klocek->w, klocek->h );
 blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
 }
 
 
 
 remove_timer();
 destroy_bitmap( klocek );
 destroy_bitmap( bufor );
 allegro_exit();
 return( 0 );
 }
 END_OF_MAIN();
mam dwa problemy czemu myszka miga  no i ten klocek | 
|  | 
| DejaVu | » 2008-07-28 12:34:32 Czemu rozmiar bufora masz mniejszy niż rozdzielczość, na której uruchamiasz? Popraw to i powiedz czy pomogło. | 
|  | 
| Spilner Temat założony przez niniejszego użytkownika | Poprawiłem ale myszka dalej miga » 2008-07-28 13:36:46 #include <allegro.h>
 int main()
 {
 allegro_init();
 install_keyboard();
 install_timer();
 set_color_depth( 8 );
 set_gfx_mode( GFX_AUTODETECT, 800, 600, 0, 0 );
 set_palette( default_palette );
 
 
 install_mouse();
 show_mouse( screen );
 unscare_mouse();
 
 
 BITMAP * bufor = NULL;
 BITMAP * klocek = NULL;
 bufor = create_bitmap( 800, 600 );
 if( !bufor )
 {
 set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
 allegro_message( "Nie ma bufora" );
 allegro_exit();
 return 0;
 }
 
 klocek = load_bmp( "klocek.bmp", default_palette );
 if( !klocek )
 {
 
 set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
 allegro_message( "Error" );
 allegro_exit();
 return 0;
 }
 
 int klocek_x = 128, klocek_y = 30;
 while( !key[ KEY_ESC ] )
 {
 if( klocek_y == 550 ) klocek_y++;
 
 clear_to_color( bufor, makecol( 0, 0, 0 ) );
 
 masked_blit( klocek, bufor, 0, 0, klocek_x, klocek_y, klocek->w, klocek->h );
 blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
 }
 
 
 
 remove_timer();
 destroy_bitmap( klocek );
 destroy_bitmap( bufor );
 allegro_exit();
 return( 0 );
 }
 END_OF_MAIN();
 
chyba że coś przeoczyłem | 
|  | 
| DejaVu | » 2008-07-28 13:43:25 Spróbuj myszkę rysować na buforze a nie na ekranie. Obecnie masz: show_mouse( screen ); | 
|  | 
| Spilner Temat założony przez niniejszego użytkownika | » 2008-07-28 13:46:46  show_mouse(bufor);nie da rady wywala błąd
 | 
|  | 
| DejaVu | » 2008-07-28 14:40:20 Kompiluje się? Jeśli nie to wklej log kompilacji. Przypuszczam, że nie przeniosłeś funkcji show_mouse niżej... bufor = create_bitmap( 800, 600 );show_mouse( bufor );
 | 
|  | 
| « 1 »  2 |