Gabes |
» 2012-09-07 21:10:21 Trochę poprawek i działa. Kod działał poprawnie, na pewno podałeś złą nazwę bitmapy. || na && clear_to_color( bufor, makecol( 150, 150, 150 ) ); na początek programu bo czyściłeś bufor i wyświetlałeś na ekran. textprintf... na meni. dodałem textprintf_ex( bufor, font, 0, 0,makecol(0,0,0),-1,"menu= %d klik= %d mx= %d my=%d",menu,mb,mx,my); abyś mógł odczytywać zmienne, trzeba poprzestawiać zasięg każdego przycisku. dodane while( !menu == 0 && !key[ KEY_ESC ]) aby wyjść z programu po wybraniu menu. a i jeszcze menu równa się zero (menu = 0) a nie czy menu jest równe zero (menu==0) w if( mb & 1 ) { menu = 0; } // i tak dalej #include <allegro.h>
int mx = 0, my = 0, mb = 0; void myszka() { if( mx != mouse_x || my != mouse_y || mb != mouse_b ) { mx = mouse_x; my = mouse_y; mb = mouse_b; } };
int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 1000, 800, 0, 0 ); clear_to_color( screen, makecol( 128, 128, 128 ) ); BITMAP * kursor = NULL; kursor = load_bmp( "kursor.bmp", default_palette ); install_mouse(); show_mouse( screen ); set_mouse_sprite( kursor ); BITMAP * bufor = NULL; BITMAP * meni = NULL; BITMAP * przycisk11 = NULL; BITMAP * przycisk12 = NULL; BITMAP * przycisk13 = NULL; BITMAP * przycisk14 = NULL; BITMAP * przycisk15 = NULL; BITMAP * przycisk2 = NULL; bufor = create_bitmap( 1000, 800 ); meni = load_bmp( "menub.bmp", default_palette ); przycisk11 = load_bmp( "przycisk1.bmp", default_palette ); przycisk12 = load_bmp( "przycisk1.bmp", default_palette ); przycisk13 = load_bmp( "przycisk1.bmp", default_palette ); przycisk14 = load_bmp( "przycisk1.bmp", default_palette ); przycisk15 = load_bmp( "przycisk1.bmp", default_palette ); przycisk2 = load_bmp( "przycisk2.bmp", default_palette ); int menu = 1; while( !menu == 0 && !key[ KEY_ESC ] ) { clear_to_color( bufor, makecol( 150, 150, 150 ) ); myszka(); if( menu == 1 ) { if( mx > 425 && mx < 575 && my < 575 && my > 525 ) { masked_blit( przycisk2, meni, 0, 0, 500, 550, przycisk2->w, przycisk2->h ); textprintf_ex( meni, font, 500, 550, makecol( 0, 0, 0 ), - 1, "Start" ); if( mb & 1 ) { menu = 2; } } else { masked_blit( przycisk11, meni, 0, 0, 500, 550, przycisk11->w, przycisk11->h ); textprintf_ex( meni, font, 500, 550, makecol( 200, 200, 200 ), - 1, "Start" ); } if( mx > 425 && mx < 575 && my < 500 && my > 450 ) { masked_blit( przycisk2, meni, 0, 0, 500, 475, przycisk2->w, przycisk2->h ); textprintf_ex( meni, font, 500, 475, makecol( 0, 0, 0 ), - 1, "Kontynuj" ); if( mb & 1 ) { menu = 3; } } else { masked_blit( przycisk12, meni, 0, 0, 500, 475, przycisk12->w, przycisk12->h ); textprintf_ex( meni, font, 500, 475, makecol( 200, 200, 200 ), - 1, "Kontynuj" ); } if( mx > 425 && mx < 575 && my < 425 && my > 375 ) { masked_blit( przycisk2, meni, 0, 0, 500, 400, przycisk2->w, przycisk2->h ); textprintf_ex( meni, font, 500, 400, makecol( 0, 0, 0 ), - 1, "Autorzy" ); if( mb & 1 ) { menu = 4; } } else { masked_blit( przycisk13, meni, 0, 0, 500, 400, przycisk13->w, przycisk13->h ); textprintf_ex( meni, font, 500, 400, makecol( 200, 200, 200 ), - 1, "Autorzy" ); } if( mx > 425 && mx < 575 && my < 350 && my > 300 ) { masked_blit( przycisk2, meni, 0, 0, 500, 325, przycisk2->w, przycisk2->h ); textprintf_ex( meni, font, 500, 330, makecol( 0, 0, 0 ), - 1, "Pomoc" ); if( mb & 1 ) { menu = 5; } } else { masked_blit( przycisk14, meni, 0, 0, 500, 325, przycisk14->w, przycisk14->h ); textprintf_ex( meni, font, 500, 330, makecol( 200, 200, 200 ), - 1, "Pomoc" ); } if( mx > 425 && mx < 575 && my < 275 && my > 225 ) { masked_blit( przycisk2, meni, 0, 0, 500, 250, przycisk2->w, przycisk2->h ); textprintf_ex( meni, font, 500, 250, makecol( 0, 0, 0 ), - 1, "Wyjscie" ); if( mb & 1 ) { menu = 0; } } else { masked_blit( przycisk15, meni, 0, 0, 500, 250, przycisk15->w, przycisk15->h ); textprintf_ex( meni, font, 500, 250, makecol( 200, 200, 200 ), - 1, "Wyjscie" ); } if( key[ KEY_ESC ] ) { menu = 0; } blit( meni, bufor, 0, 0, 0, 0, 1000, 800 ); } if( key[ KEY_ENTER ] ) { menu = 1; } textprintf_ex( bufor, font, 0, 0, makecol( 0, 0, 0 ), - 1, "menu= %d klik= %d mx= %d my=%d", menu, mb, mx, my ); blit( bufor, screen, 0, 0, 0, 0, 1000, 800 ); } destroy_bitmap( bufor ); destroy_bitmap( meni ); destroy_bitmap( przycisk11 ); destroy_bitmap( przycisk12 ); destroy_bitmap( przycisk13 ); destroy_bitmap( przycisk14 ); destroy_bitmap( przycisk15 ); destroy_bitmap( przycisk2 ); return 0; } END_OF_MAIN(); edycja danie powrotu do menu klawisz enter if( key[ KEY_ENTER] ) { menu = 1; } |