Forczek Temat założony przez niniejszego użytkownika |
Allegro 4, menu. » 2012-09-07 14:44:58 Siemka, najpierw kod: #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 ); unscare_mouse(); 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( "menu.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 ) { 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( przycisk2, font, 500, 550, makecol( 200, 200, 200 ), - 1, "Start" ); if( mb == 1 ) { menu == 2; } } else { masked_blit( przycisk11, meni, 0, 0, 500, 550, przycisk11->w, przycisk11->h ); textprintf_ex( przycisk11, 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( przycisk2, font, 500, 475, makecol( 200, 200, 200 ), - 1, "Kontynuj" ); if( mb == 1 ) { menu == 3; } } else { masked_blit( przycisk12, meni, 0, 0, 500, 475, przycisk12->w, przycisk12->h ); textprintf_ex( przycisk12, 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( przycisk2, font, 500, 400, makecol( 200, 200, 200 ), - 1, "Autorzy" ); if( mb == 1 ) { menu == 4; } } else { masked_blit( przycisk13, meni, 0, 0, 500, 400, przycisk13->w, przycisk13->h ); textprintf_ex( przycisk13, 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( przycisk2, font, 500, 300, makecol( 200, 200, 200 ), - 1, "Pomoc" ); if( mb == 1 ) { menu == 5; } } else { masked_blit( przycisk14, meni, 0, 0, 500, 300, przycisk14->w, przycisk14->h ); textprintf_ex( przycisk2, font, 500, 300, 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( bufor, font, 500, 250, makecol( 200, 200, 200 ), - 1, "Wyjscie" ); if( mb == 1 ) { menu == 0; } } else { masked_blit( przycisk15, meni, 0, 0, 500, 250, przycisk15->w, przycisk15->h ); textprintf_ex( bufor, font, 500, 250, makecol( 200, 200, 200 ), - 1, "Wyjscie" ); } if( key[ KEY_ESC ] ) { menu = 0; } blit( meni, bufor, 0, 0, 0, 0, 1000, 800 ); } myszka(); clear_to_color( bufor, makecol( 150, 150, 150 ) ); 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();
Jest taki problem że się kompiluje, lecz jest jakiś błąd który od razu wyłącza program. Czy widzicie jakiś błąd? |
Gabes |
» 2012-09-07 17:10:37 Na ifach deleko się nie zajedziesz, sam tak zaczynałem w allegro4, ale w allegro5 zaczołem tworzyć funkcje i wygląda to bardziej przejżyście. Tu zmoienione dla allegro4. Czcionka bitmapowa, opis buttona,pozycja dowolna. Jakby co to moge podrzucić cały kod. BITMAP * bufor = NULL; FONT * font_pcx1 = NULL; bool na = false, klik = false;
void al_button( BITMAP * bufor, BITMAP * bmp, FONT * font, int x, int y, char const text[] ) { int szer_bmp = bmp->w, wys_bmp = bmp->h; if( mouse_x > x && mouse_x < x + szer_bmp && mouse_y > y && mouse_y < y + wys_bmp ) na = true; if( mouse_b & 1 ) klik = true; if( na == true && klik == true ) draw_sprite( bufor, bmp, x, y ), textprintf_ex( bufor, font_pcx1, x + 30, y + 5, makecol( 255, 255, 255 ), - 1, "%s", text ); else draw_sprite( bufor, bmp, x, y ), textprintf_ex( bufor, font_pcx1, x + 30, y + 5, makecol( 255, 0, 0 ), - 1, "%s", text ); if( na == true && klik == true && text == "Koniec" ) { zamknij = true; }; na = false; klik = false; }; ... ... ... al_button( bufor, button, font_pcx1, 100, 100, " Graj" ); al_button( bufor, button, font_pcx1, 100, 132, "Menu" ); al_button( bufor, button, font_pcx1, 100, 164, "Coś tam" ); al_button( bufor, button, font_pcx1, 100, 196, "Koniec" ); |