dmx81 |
» 2010-07-09 03:37:42 #include <allegro.h> #include <vector>
class OKNO { public: bool disp_okno; BITMAP * obrazek; int x, y, s, w; OKNO() { }; OKNO( int X, int Y, int S, int W ) { x = X; y = Y; s = S; w = W; } } GLOWNE, OPCJE, OPCJA1, SCHOWANE;
int main() { allegro_init(); install_keyboard(); install_mouse(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0 ); std::vector < OKNO > wektor; OKNO GLOWNE( 20, 20, 600, 440 ); GLOWNE.obrazek = create_bitmap( GLOWNE.s, GLOWNE.w ); GLOWNE.disp_okno = true; if( !GLOWNE.obrazek ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć GLOWNE !" ); allegro_exit(); return 0; } wektor.push_back( GLOWNE ); OKNO OPCJE( 0, 0, 600, 30 ); OPCJE.obrazek = create_bitmap( OPCJE.s, OPCJE.w ); OPCJE.disp_okno = true; if( !OPCJE.obrazek ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć OPCJE !" ); allegro_exit(); return 0; } wektor.push_back( OPCJE ); OKNO OPCJA1( 5, 5, 77, 20 ); OPCJA1.obrazek = create_bitmap( OPCJA1.s, OPCJA1.w ); OPCJA1.disp_okno = true; if( !OPCJA1.obrazek ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć OPCJA1 !" ); allegro_exit(); return 0; } wektor.push_back( OPCJA1 ); OKNO SCHOWANE( OPCJA1.x, OPCJE.w, 77, 200 ); SCHOWANE.obrazek = create_bitmap( SCHOWANE.s, SCHOWANE.w ); SCHOWANE.disp_okno = false; if( !SCHOWANE.obrazek ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć SCHOWANE !" ); allegro_exit(); return 0; } wektor.push_back( SCHOWANE ); bool wysuwanie1 = false; bool wysuwanie2 = false; int temp_wysokosc = SCHOWANE.w; int temp_pos_Y = 0; while( !key[ KEY_ESC ] ) { clear_to_color( SCHOWANE.obrazek, makecol( 11, 44, 52 ) ); clear_to_color( GLOWNE.obrazek, makecol( 136, 144, 172 ) ); clear_to_color( OPCJE.obrazek, makecol( 200, 200, 255 ) ); clear_to_color( OPCJA1.obrazek, makecol( 121, 212, 255 ) ); if( SCHOWANE.disp_okno ) { textprintf_ex( SCHOWANE.obrazek, font, 1, 10, makecol( 200, 220, 20 ), 0, "OPCJA1" ); textprintf_ex( SCHOWANE.obrazek, font, 1, 25, makecol( 200, 20, 220 ), 0, "OPCJA2" ); textprintf_ex( SCHOWANE.obrazek, font, 1, 40, makecol( 200, 220, 220 ), 0, "OPCJA3" ); textprintf_ex( SCHOWANE.obrazek, font, 1, 55, makecol( 50, 220, 120 ), 0, "OPCJA4" ); textprintf_ex( SCHOWANE.obrazek, font, 1, 70, makecol( 200, 120, 120 ), 0, "OPCJA5" ); textprintf_ex( SCHOWANE.obrazek, font, 1, 85, makecol( 200, 220, 220 ), 0, "OPCJA6" ); textprintf_ex( SCHOWANE.obrazek, font, 1, 100, makecol( 200, 210, 230 ), 0, "OPCJA7" ); } if( is_inside_bitmap( OPCJA1.obrazek, mouse_x, mouse_y, 0 ) ||( is_inside_bitmap( SCHOWANE.obrazek, mouse_x, mouse_y, 0 ) && SCHOWANE.disp_okno ) ) { if( mouse_b == 1 ) SCHOWANE.disp_okno = true; else if( mouse_b == 2 ) { wysuwanie1 = true; SCHOWANE.disp_okno = true; } else wysuwanie1 = false; if( wysuwanie1 == true && wysuwanie2 == false ) { temp_pos_Y = SCHOWANE.w; temp_wysokosc = 0; wysuwanie1 = false; wysuwanie2 = true; } if( wysuwanie2 == true ) { temp_pos_Y--; temp_wysokosc++; rest( 5 ); if( temp_pos_Y <= 0 ) temp_pos_Y = 0; if( temp_wysokosc >= SCHOWANE.w ) temp_wysokosc = SCHOWANE.w; } } else { SCHOWANE.disp_okno = false; temp_pos_Y = 0; temp_wysokosc = SCHOWANE.w; wysuwanie2 = false; } masked_blit( OPCJA1.obrazek, OPCJE.obrazek, 0, 0, OPCJA1.x, OPCJA1.y, OPCJA1.s, OPCJA1.w ); masked_blit( OPCJE.obrazek, GLOWNE.obrazek, 0, 0, OPCJE.x, OPCJE.y, OPCJE.s, OPCJE.w ); if( SCHOWANE.disp_okno == true ) masked_blit( SCHOWANE.obrazek, GLOWNE.obrazek, 0, temp_pos_Y, SCHOWANE.x, SCHOWANE.y, SCHOWANE.s, temp_wysokosc ); show_mouse( GLOWNE.obrazek ); masked_blit( GLOWNE.obrazek, screen, 0, 0, GLOWNE.x, GLOWNE.y, GLOWNE.s, GLOWNE.w ); } destroy_bitmap( GLOWNE.obrazek ); destroy_bitmap( OPCJE.obrazek ); destroy_bitmap( OPCJA1.obrazek ); destroy_bitmap( SCHOWANE.obrazek ); allegro_exit(); return 0; } END_OF_MAIN();
2 godzinki i takie cos nabazgralem :) czy o takie cos Ci chodzi? kliknij na ten obrazek raz lewym, raz prawym - wysuwa sie lub poprostu wyskakuje, chowa sie jak uciekniesz kursorem poza zasieg oczywiscie posiedziec mozna nastepne 2 godzinki i : -zalatwic sprawe myszki (bo nie mialem juz sily do tego - jak widac przykrywa sie, wiec troche na okolo to zrobilem) -uaktywnic menu wysuwane, aby naciskajac cos sie dzialo ale napisalem tylko pogladowy pomysl na dzialajace wysuwajace sie menu, bo lubie takie zadania, wiadomo - ucze sie, wiec kazde wyzwanie mobilizuje, a samemu ciezko czasem cos wymyslec :) napisz czy o to ci chodzilo, caly kod wg wlasnego pomyslu, wiec jakby cos bylo nie jasne to pytaj PS>> dodalem destroy_bitmap dla obrazkow oraz allegro_exit(), bo wczesniej pominalem.... ale teraz zamykajac program wyskakuje jakis blad... PS2>> poprawilem wyswietlanie myszki |