hit Temat założony przez niniejszego użytkownika |
[Allegro 4.x] Problem z dodaniem timera. » 2013-09-21 14:03:24 Witam,
zgodnie z kursem allegro dostępnym w serwisie próbuję do swojego programu dodać timer. Mam dodany cały kod tak jak jest tam przedstawione, oraz stworzoną pętlę while(speed > 0 ) {}. Problem polega na tym, że program się uruchamia ale poruszanie postacią w ogóle nie działa, stoi w miejscu ( bez timera działa poprawnie ). Co może być przyczyną? |
|
pekfos |
» 2013-09-21 14:06:00 Podaj kod. |
|
hit Temat założony przez niniejszego użytkownika |
» 2013-09-21 14:14:38 #define USE_CONSOLE #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(); set_color_depth( 16 ); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); clear_to_color( screen, makecol( 128, 128, 128 ) ); install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" ); set_volume( 0, 0 ); SAMPLE * muzyka = load_sample( "muzyka.wav" ); play_sample( muzyka, 255, 127, 1000, 1 ); BITMAP * bomber = load_bmp( "B1.bmp", default_palette ); BITMAP * bufor = create_bitmap( 640, 480 ); blit( bomber, screen, 0, 0, 100, 100, bomber->w, bomber->h ); int bomber_x = 100, bomber_y = 100; while( !key[ KEY_ESC ] ) { while( speed > 0 ) { if( key[ KEY_LEFT ] ) bomber_x--; if( key[ KEY_RIGHT ] ) bomber_x++; if( key[ KEY_UP ] ) bomber_y--; if( key[ KEY_DOWN ] ) bomber_y++; if( key[ KEY_SPACE ] ) bomber_x = 320, bomber_y = 240; speed--; } clear_to_color( bufor, makecol( 150, 150, 150 ) ); textprintf_ex( bufor, font, 10, 10, makecol( 99, 0, 33 ), - 1, "Testujemy: x = %d, y = %d", bomber_x, bomber_y ); masked_blit( bomber, bufor, 0, 0, bomber_x, bomber_y, bomber->w, bomber->h ); blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); speed--; } remove_int( increment_speed ); stop_sample( muzyka ); destroy_sample( muzyka ); destroy_bitmap( bufor ); destroy_bitmap( bomber ); readkey(); return 0; }
END_OF_MAIN();
|
|
pekfos |
» 2013-09-21 14:29:17 Masz 2 razy speed--. |
|
hit Temat założony przez niniejszego użytkownika |
» 2013-09-21 14:34:08 Faktycznie, bo na początku zamieniłem całą główną pętlę na tą, która powinna być w środku i widocznie nie usunąłem wszystkiego. Przepraszam za zawracanie głowy i dziękuję za pomoc :) |
|
« 1 » |