[Allegro 5] Menu - dwa kliknięcia
Ostatnio zmodyfikowano 2013-11-20 20:19
Ven_64 Temat założony przez niniejszego użytkownika |
[Allegro 5] Menu - dwa kliknięcia » 2013-11-20 19:45:52 Witam! Mam problem z menu, polega on na tym, że gdy chce włączyć tryb pełnoekranowy, lub wrócić do okienkowego muszę kliknąć dwa razy (wraca mnie do menu głównego, muszę znowu wejść do ustawień i znowu kliknąć ).Powinno działać za jednym naciśnięciem Oto kod: #include <iostream> #include <allegro5/allegro5.h> #include <allegro5/allegro_font.h> #include <allegro5/allegro_image.h> int gra_w() { return 0; } int gra_j() { return 0; } int menu() { ALLEGRO_MOUSE_STATE myszka; ALLEGRO_BITMAP * menu = al_load_bitmap( "m_g0.png" ); al_draw_bitmap( menu, 0, 0, 0 ); al_flip_display(); while( true ) { al_get_mouse_state( & myszka ); if( myszka.buttons == 1 ) { if( myszka.x <= 604 && myszka.x >= 184 ) { if( myszka.y <= 178 && myszka.y >= 78 ) { al_rest( 0.1 ); ALLEGRO_BITMAP * menu_gra1 = al_load_bitmap( "m_gr0.png" ); al_draw_bitmap( menu_gra1, 0, 0, 0 ); al_flip_display(); while( true ) { al_get_mouse_state( & myszka ); if( myszka.buttons == 1 ) { if( myszka.x <= 604 && myszka.x >= 184 ) { if( myszka.y <= 178 && myszka.y >= 78 ) { al_destroy_bitmap( menu_gra1 ); al_rest( 0.1 ); return 1; } } if( myszka.x <= 604 && myszka.x >= 184 ) { if( myszka.y <= 287 && myszka.y >= 191 ) { al_destroy_bitmap( menu_gra1 ); al_rest( 0.1 ); return 2; } } if( myszka.x <= 604 && myszka.x >= 184 ) { if( myszka.y <= 400 && myszka.y >= 299 ) { al_destroy_bitmap( menu_gra1 ); al_rest( 0.1 ); return 3; } } } } } } } if( myszka.buttons == 1 ) { if( myszka.x <= 604 && myszka.x >= 184 ) { if( myszka.y <= 287 && myszka.y >= 191 ) { al_rest( 0.1 ); ALLEGRO_BITMAP * ustawienia = al_load_bitmap( "m_u0.png" ); al_draw_bitmap( ustawienia, 0, 0, 0 ); al_flip_display(); while( true ) { al_get_mouse_state( & myszka ); if( myszka.buttons == 1 ) { if( myszka.x <= 604 && myszka.x >= 184 ) { if( myszka.y <= 180 && myszka.y >= 77 ) { al_destroy_bitmap( ustawienia ); al_rest( 0.1 ); return 4; } } if( myszka.x <= 604 && myszka.x >= 184 ) { if( myszka.y <= 287 && myszka.y >= 191 ) { al_destroy_bitmap( ustawienia ); al_rest( 0.1 ); return 5; } } if( myszka.x <= 607 && myszka.x >= 184 ) { if( myszka.y <= 401 && myszka.y >= 299 ) { al_destroy_bitmap( ustawienia ); al_rest( 0.1 ); return 3; } } } } } } } if( myszka.buttons == 1 ) { if( myszka.x <= 607 && myszka.x >= 184 ) { if( myszka.y <= 401 && myszka.y >= 299 ) { return 0; } } } } al_destroy_bitmap( menu ); } int main() { al_init(); al_install_keyboard(); al_install_mouse(); al_init_font_addon(); al_init_image_addon(); al_set_new_display_flags( ALLEGRO_WINDOWED ); al_set_new_display_refresh_rate( 60 ); ALLEGRO_DISPLAY * okno = al_create_display( 800, 600 ); al_set_window_title( okno, "Nowa Gra" ); do { short opcja = menu(); switch( opcja ) { case 1: { gra_w(); break; } case 2: { gra_j(); break; } case 3: { menu(); break; } case 4: { al_destroy_display( okno ); al_set_new_display_flags( ALLEGRO_FULLSCREEN ); al_set_new_display_refresh_rate( 60 ); ALLEGRO_DISPLAY * okno = al_create_display( 800, 600 ); al_set_window_title( okno, "Nowa Gra" ); break; } case 5: { al_destroy_display( okno ); al_set_new_display_flags( ALLEGRO_WINDOWED ); al_set_new_display_refresh_rate( 60 ); ALLEGRO_DISPLAY * okno = al_create_display( 800, 600 ); al_set_window_title( okno, "Nowa Gra" ); break; } } } while( menu() != 0 ); al_destroy_display( okno ); return 0; }
|
|
pekfos |
» 2013-11-20 19:52:47 Po wybraniu czegokolwiek wychodzisz z funkcji. |
|
Ven_64 Temat założony przez niniejszego użytkownika |
» 2013-11-20 20:17:24 Dzięki, ale nie widzę w tym problemu za bardzo. Mógł Byś wytłumaczyć trochę hm, szerzej problem? |
|
pekfos |
» 2013-11-20 20:19:20 Mógł Byś wytłumaczyć trochę hm, szerzej problem? |
To Ty powinieneś to zrobić. |
|
« 1 » |