maver144 Temat założony przez niniejszego użytkownika |
Klatkowane Allegro » 2013-12-11 21:34:46 Witam mam taki oto problem, przy przyśpieszonym ruchu obraz jakby klatkuje, jak się tego pozbyć? A i jeszcze proszę sprawdzić, czy nic nie namieszałem z timerem: #include <allegro.h>
volatile long speed = 0;
void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed );
int main() { allegro_init(); install_keyboard(); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); set_palette( default_palette ); set_color_depth( 16 ); BITMAP * fatboy = NULL; BITMAP * bfatboy = NULL; fatboy = load_bmp( "fatBoy.bmp", default_palette ); if( !fatboy ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "nie mogę załadować obrazka fatboy !" ); allegro_exit(); return 0; } bfatboy = create_bitmap( 800, 600 ); if( !bfatboy ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć bufora !" ); allegro_exit(); return 0; } blit( fatboy, screen, 0, 0, 100, 100, fatboy->w, fatboy->h ); int fatboy_x = 100, fatboy_y = 100; while( speed > 0 ) { speed--; if( key[ KEY_LEFT ] ) fatboy_x--; if( key[ KEY_RIGHT ] ) fatboy_x += 25; if( key[ KEY_UP ] ) fatboy_y--; if( key[ KEY_DOWN ] ) fatboy_y++; clear_to_color( bfatboy, makecol( 150, 150, 150 ) ); masked_blit( fatboy, bfatboy, 0, 0, fatboy_x, fatboy_y, fatboy->w, fatboy->h ); blit( bfatboy, screen, 0, 0, 0, 0, 800, 600 ); } if( key[ KEY_ESC ] ) readkey(); destroy_bitmap( fatboy ); destroy_bitmap( bfatboy ); allegro_exit(); return 0; } END_OF_MAIN(); |
|
kubawal |
» 2013-12-11 21:41:30 Nie czyścisz ekranu. |
|
pekfos |
» 2013-12-11 21:44:49 Czyści. Źle użyłeś timera. Timery |
|
maver144 Temat założony przez niniejszego użytkownika |
Timer » 2013-12-11 22:00:28 Wrzucam tutaj poprawiony, wg mnie powinien działać, ale nadal klatkuje. Proszę o poprawienie jeśli coś nadal jest zle. #include <allegro.h>
volatile long speed = 0;
void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed );
int main() { allegro_init(); install_keyboard(); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); set_palette( default_palette ); set_color_depth( 16 ); BITMAP * fatboy = NULL; BITMAP * bfatboy = NULL; fatboy = load_bmp( "fatBoy.bmp", default_palette ); if( !fatboy ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "nie mogę załadować obrazka fatboy !" ); allegro_exit(); return 0; } bfatboy = create_bitmap( 800, 600 ); if( !bfatboy ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć bufora !" ); allegro_exit(); return 0; } blit( fatboy, screen, 0, 0, 100, 100, fatboy->w, fatboy->h ); int fatboy_x = 100, fatboy_y = 100; while( !key[ KEY_ESC ] ) { while( speed > 0 ) { speed--; if( key[ KEY_LEFT ] ) fatboy_x--; if( key[ KEY_RIGHT ] ) fatboy_x += 3; if( key[ KEY_UP ] ) fatboy_y--; if( key[ KEY_DOWN ] ) fatboy_y++; } clear_to_color( bfatboy, makecol( 150, 150, 150 ) ); masked_blit( fatboy, bfatboy, 0, 0, fatboy_x, fatboy_y, fatboy->w, fatboy->h ); blit( bfatboy, screen, 0, 0, 0, 0, 800, 600 ); } if( key[ KEY_ESC ] ) readkey(); remove_int( increment_speed ); destroy_bitmap( fatboy ); destroy_bitmap( bfatboy ); allegro_exit(); return 0; } END_OF_MAIN();
|
|
Gabes |
» 2013-12-11 23:43:12 Głębie kolorów podaj przed utworzeniem okna. |
|
maver144 Temat założony przez niniejszego użytkownika |
Klatkowanie » 2013-12-12 13:31:37 Pomogło ! Dzięki wielkie za odpowiedz . |
|
« 1 » |