Bartaz Temat założony przez niniejszego użytkownika |
C++ allegro goto » 2010-03-14 20:58:30 Witam napisalem sobie menu i jest takie cos ze gdy klikne lewym przyciskiem (tu zrobilem przypadkiem na wyjscie a powinno byc nowa gra)to wlancza sie pierwsza plansza ale nic sie nie dzieje dlaczego? Kod: #include <allegro.h>
volatile long speed = 0; void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed ); LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed );
BITMAP * bufor = NULL; BITMAP * menu_tlo_ = NULL; BITMAP * menu_nowa_gra = NULL; BITMAP * menu_opcje = NULL; BITMAP * menu_opcjez = NULL; BITMAP * menu_nowa_graz = NULL; BITMAP * menu_wyjscie = NULL; BITMAP * menu_wyjsciez = NULL; BITMAP * ziemia = NULL; SAMPLE * click = NULL;
class interfejs { public: int x; int y; int w; int s; }; class postac { public: int x; int y; int s; int w; }; class kafelki { public: int x; int y; int s; int w; };
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( 32 ); set_gfx_mode( GFX_AUTODETECT, 1000, 700, 0, 0 ); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 107 ) ); install_mouse(); show_mouse( screen ); unscare_mouse(); install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" ); set_volume( 255, 255 ); bufor = create_bitmap( 1000, 700 ); menu_tlo_ = load_bitmap( "Grafika/Menu/menu_tlo_.bmp", default_palette ); menu_nowa_gra = load_bitmap( "Grafika/Menu/nowa_gra_n.bmp", default_palette ); menu_nowa_graz = load_bitmap( "Grafika/Menu/nowa_gra_z.bmp", default_palette ); menu_opcje = load_bitmap( "Grafika/Menu/opcje_n.bmp", default_palette ); menu_opcjez = load_bitmap( "Grafika/Menu/opcje_z.bmp", default_palette ); menu_wyjscie = load_bitmap( "Grafika/Menu/wyjscie_n.bmp", default_palette ); menu_wyjsciez = load_bitmap( "Grafika/Menu/wyjscie_z.bmp", default_palette ); ziemia = load_bitmap( "Grafika/Plansza/ziemia.bmp", default_palette ); click = load_sample( "Muzyka/click.wav" ); interfejs nowa_gra_, opcje_, wyjscie_; kafelki ziemiaa; postac ludek; nowa_gra_.x = 300, nowa_gra_.y = 107, nowa_gra_.s = 339, nowa_gra_.w = 88; wyjscie_.x = 300, wyjscie_.y = 470, wyjscie_.s = 339, wyjscie_.w = 88; opcje_.x = 300, opcje_.y = 300, opcje_.s = 167, opcje_.w = 64; ziemiaa.x = 0, ziemiaa.y = 500, ziemiaa.s = 50, ziemiaa.w = 50; int menu_tlo_x = 0; int menu_tlo_y = 0; bool if_play = true; bool if_play1 = true; bool if_play2 = true; bool czy_wyswietlac_menu = true; while( !key[ KEY_ESC ] ) { myszka(); clear_to_color( bufor,( 107, 109, 111 ) ); if( czy_wyswietlac_menu == true ); { textprintf_ex( bufor, font, 300, 300, makecol( 50, 200, 30 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb ); masked_blit( menu_tlo_, bufor, 0, 0, menu_tlo_x, menu_tlo_y, menu_tlo_->w, menu_tlo_->h ); masked_blit( menu_nowa_gra, bufor, 0, 0, nowa_gra_.x, nowa_gra_.y, nowa_gra_.s, nowa_gra_.w ); masked_blit( menu_opcje, bufor, 0, 0, opcje_.x, opcje_.y, opcje_.s, opcje_.w ); masked_blit( menu_wyjscie, bufor, 0, 0, wyjscie_.x, wyjscie_.y, wyjscie_.s, wyjscie_.w ); if(( mx > nowa_gra_.x && mx < nowa_gra_.x + nowa_gra_.s && my > nowa_gra_.y && my < nowa_gra_.y + nowa_gra_.w ) ) { if( if_play ) { play_sample( click, 255, 127, 1007, 0 ); if_play = false; } masked_blit( menu_nowa_graz, bufor, 0, 0, nowa_gra_.x, nowa_gra_.y, nowa_gra_.s, nowa_gra_.w ); } else { if_play = true; } if(( mx > opcje_.x && mx < opcje_.x + opcje_.s && my > opcje_.y && my < opcje_.y + opcje_.w ) ) { if( if_play1 ) { play_sample( click, 255, 127, 1007, 0 ); if_play1 = false; } masked_blit( menu_opcjez, bufor, 0, 0, opcje_.x, opcje_.y, opcje_.s, opcje_.w ); } else { if_play1 = true; } if(( mx > wyjscie_.x && mx < wyjscie_.x + wyjscie_.s && my > wyjscie_.y && my < wyjscie_.y + wyjscie_.w ) ) { if( if_play2 ) { play_sample( click, 255, 127, 1007, 0 ); if_play2 = false; } masked_blit( menu_wyjsciez, bufor, 0, 0, wyjscie_.x, wyjscie_.y, wyjscie_.s, wyjscie_.w ); } else { if_play2 = true; } if(( mx > wyjscie_.x && mx < wyjscie_.x + wyjscie_.s && my > wyjscie_.y && my < wyjscie_.y + wyjscie_.w && mb == 1 ) ) { goto menu; } } blit( bufor, screen, 0, 0, 0, 0, 1000, 700 ); menu: czy_wyswietlac_menu = false; masked_blit( ziemia, bufor, 0, 0, ziemiaa.x, ziemiaa.y, ziemiaa.s, ziemiaa.w ); speed--; } allegro_exit(); return( 0 ); } END_OF_MAIN();
Zrobilem to tak ze gdy sie nacisnie na opcje to zmiennia bool o nazwie czy_wyswietlac_menu robi sie na false i wtedy nie powinno sie wyswietlac menu a nadal tam jest no a potem jest gogo plansza... if(( mx > wyjscie_.x && mx < wyjscie_.x + wyjscie_.s && my > wyjscie_.y && my < wyjscie_.y + wyjscie_.w && mb == 1 ) ) { goto menu; } } blit( bufor, screen, 0, 0, 0, 0, 1000, 700 ); menu: czy_wyswietlac_menu = false; masked_blit( ziemia, bufor, 0, 0, ziemiaa.x, ziemiaa.y, ziemiaa.s, ziemiaa.w );
if( czy_wyswietlac_menu == true );
{ textprintf_ex( bufor, font, 300, 300, makecol( 50, 200, 30 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb ); masked_blit( menu_tlo_, bufor, 0, 0, menu_tlo_x, menu_tlo_y, menu_tlo_->w, menu_tlo_->h ); masked_blit( menu_nowa_gra, bufor, 0, 0, nowa_gra_.x, nowa_gra_.y, nowa_gra_.s, nowa_gra_.w ); masked_blit( menu_opcje, bufor, 0, 0, opcje_.x, opcje_.y, opcje_.s, opcje_.w ); masked_blit( menu_wyjscie, bufor, 0, 0, wyjscie_.x, wyjscie_.y, wyjscie_.s, wyjscie_.w );
|