matiasz Temat założony przez niniejszego użytkownika |
[Allegro 5] Problem z menu » 2013-03-23 16:35:40 Witam! Zrobiłem proste menu ,ale mam z nim problem. Otóż polega on na tym ,że całość działa jakby za szybko. Zamiast przesuwać się do następnej pozycji ,a przeskakuje o 2 albo 3 pozycje. Wie ktoś jak to zrobić ,żeby tak nie przeskakiwało ? Oczywiście wszystko jest w pętli while if( al_key_down( & keyState, ALLEGRO_KEY_DOWN ) ) menu++;
if( al_key_down( & keyState, ALLEGRO_KEY_UP ) ) menu--;
if( menu > 3 ) menu = 0;
switch( menu ) { case 0: { al_clear_to_color( al_map_rgb( 255, 0, 0 ) ); al_flip_display(); break; } case 1: { al_clear_to_color( al_map_rgb( 255, 255, 0 ) ); al_flip_display(); break; } case 2: { al_clear_to_color( al_map_rgb( 255, 255, 255 ) ); al_flip_display(); break; } case 3: { al_clear_to_color( al_map_rgb( 0, 255, 255 ) ); al_flip_display(); break; } } |
|
pekfos |
» 2013-03-23 16:48:01 Dodaj jakiś timer. Np taki: clock_t last = 0;
if( nacisinieto && clock() > last + CLOCKS_PER_SEC ) { last = clock(); do_sth(); } |
|
matiasz Temat założony przez niniejszego użytkownika |
» 2013-03-24 00:43:17 Dzięki pomogło! |
|
matiasz Temat założony przez niniejszego użytkownika |
» 2013-03-24 11:10:56 Mam jeszcze jeden problem z tym menu mianowicie chcę ,aby po naciśnięciu klawisza "enter" (przy pozycji menu = 0) gra się rozpoczęła ,lecz gra rysuje się automatycznie bez wciskania klawisza "enter".Skutkiem tego jest migające menu na przemian z bitmapą gry.Czy to menu w ogóle jest dobre czy się nie nadaje ? Kod: if( events.timer.source == menuTimer ) { if( al_key_down( & keyState, ALLEGRO_KEY_DOWN ) ) menu++; if( al_key_down( & keyState, ALLEGRO_KEY_UP ) ) menu--; if( menu > 2 ) menu = 0; if( menu < 0 ) menu = 2; switch( menu ) { case 0: { al_clear_to_color( al_map_rgb( 0, 0, 0 ) ); al_draw_text( blazed, al_map_rgb( 0, 255, 0 ), 200, 100, 0, "Multiplayer Football" ); al_draw_bitmap( menu1, 200, 200, 0 ); al_clear_to_color( al_map_rgb( 0, 0, 0 ) ); if( al_key_down( & keyMenuState, ALLEGRO_KEY_ENTER ) ); { graj( events, pilka, gracz1, gracz2, keyState, timer, bitmapTimer, event_queue, gracz1Bitmap, gracz2Bitmap, pilkaBitmap ); rysuj( mapa, pilkaBitmap, gracz1Bitmap, gracz2Bitmap, pilka, gracz1, gracz2, blazed ); } al_flip_display(); break; } case 1: { al_clear_to_color( al_map_rgb( 0, 0, 0 ) ); al_draw_text( blazed, al_map_rgb( 0, 255, 0 ), 200, 100, 0, "Multiplayer Football" ); al_draw_bitmap( menu2, 200, 200, 0 ); al_flip_display(); break; } case 2: { al_clear_to_color( al_map_rgb( 0, 0, 0 ) ); al_draw_text( blazed, al_map_rgb( 0, 255, 0 ), 200, 100, 0, "Multiplayer Football" ); al_draw_bitmap( menu3, 200, 200, 0 ); al_flip_display(); break; } } |
|
pekfos |
» 2013-03-24 12:12:14 int x = 0;
switch( x ) { case 0: if( enter ) x = 1; break; case 1: break; } Podstawy.. ;) |
|
matiasz Temat założony przez niniejszego użytkownika |
» 2013-03-24 13:40:49 Ok działa tylko dalej przeskakuje menu na przemian z obrazem gry :/ |
|
pekfos |
» 2013-03-24 13:47:13 Pokaż aktualny kod. |
|
matiasz Temat założony przez niniejszego użytkownika |
» 2013-03-24 13:49:52 Używam triple timer dlatego w osobnym switch'u jest sterowanie i rysowanie w przeciwnym wypadku wszystko się rozmazuje if( events.timer.source == menuTimer ) { if( al_key_down( & keyMenuState, ALLEGRO_KEY_DOWN ) ) menu++; if( al_key_down( & keyMenuState, ALLEGRO_KEY_UP ) ) menu--; if( menu > 3 ) menu = 0; if( menu < 0 ) menu = 3; switch( menu ) { case 0: { if( al_key_down( & keyMenuState, ALLEGRO_KEY_ENTER ) ) { al_clear_to_color( al_map_rgb( 0, 0, 0 ) ); gra = 1; } else { al_clear_to_color( al_map_rgb( 0, 0, 0 ) ); al_draw_text( blazed, al_map_rgb( 0, 255, 0 ), 200, 100, 0, "Multiplayer Football" ); al_draw_bitmap( menu1, 200, 200, 0 ); al_flip_display(); } break; } case 1: { al_clear_to_color( al_map_rgb( 0, 0, 0 ) ); al_draw_text( blazed, al_map_rgb( 0, 255, 0 ), 200, 100, 0, "Multiplayer Football" ); al_draw_bitmap( menu2, 200, 200, 0 ); al_flip_display(); break; } case 2: { al_clear_to_color( al_map_rgb( 0, 0, 0 ) ); al_draw_text( blazed, al_map_rgb( 0, 255, 0 ), 200, 100, 0, "Multiplayer Football" ); al_draw_bitmap( menu3, 200, 200, 0 ); if( al_key_down( & keyMenuState, ALLEGRO_KEY_ENTER ) ) { al_clear_to_color( al_map_rgb( 0, 0, 0 ) ); gra = 3; } al_flip_display(); break; } } } switch( gra ) { case 1: { graj( events, pilka, gracz1, gracz2, keyState, timer, bitmapTimer, event_queue, gracz1Bitmap, gracz2Bitmap, pilkaBitmap ); rysuj( mapa, pilkaBitmap, gracz1Bitmap, gracz2Bitmap, pilka, gracz1, gracz2, blazed ); break; } case 3: { done = true; break; } } |
|
« 1 » 2 |