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 |