CTRL85 Temat założony przez niniejszego użytkownika |
[Allegro, C++] Obsługa menu za pomocą myszki i klawiatury » 2011-11-24 20:39:22 menu = 0; draw_sprite( screen,( BITMAP * ) pliki[ stol ].dat, 0, 0 ); while( speed > 0 || !key[ KEY_ESC ] ) { if( key[ KEY_UP ] ) menu--; if( key[ KEY_DOWN ] ) menu++; if( menu < 0 ) menu = 3; if( menu > 3 ) menu = 0; if( key[ KEY_ENTER ] ) break; if( key[ KEY_ESC ] ) zwolnij_pamiec(); switch( menu ) { case 0: { menu_glowne =( BITMAP * ) pliki[ menu_NowaGra ].dat; masked_blit( menu_glowne, screen, 0, 0, 295, 60, menu_glowne->w, menu_glowne->h ); break; } case 1: { menu_glowne =( BITMAP * ) pliki[ menu_Zasady ].dat; masked_blit( menu_glowne, screen, 0, 0, 295, 60, menu_glowne->w, menu_glowne->h ); break; } case 2: { menu_glowne =( BITMAP * ) pliki[ menu_Credits ].dat; masked_blit( menu_glowne, screen, 0, 0, 295, 60, menu_glowne->w, menu_glowne->h ); break; } case 3: { menu_glowne =( BITMAP * ) pliki[ menu_Wyjscie ].dat; masked_blit( menu_glowne, screen, 0, 0, 295, 60, menu_glowne->w, menu_glowne->h ); break; } default: { menu_glowne =( BITMAP * ) pliki[ menu_NowaGra ].dat; masked_blit( menu_glowne, screen, 0, 0, 295, 60, menu_glowne->w, menu_glowne->h ); break; } } readkey(); speed--; } }
Mam taki kod. Działa on znakomicie przy obsłudze menu klawiaturą w mojej grze, ale wiele osób mówiło mi, żebym dorobił obsługe myszki. Tutaj zaczyna się problem. Czy aby dodać obsługę myszką muszę pozmieniać switch i case na if'y, czy da się to jakoś dołożyć? |
|
SeaMonster131 |
» 2011-11-24 20:42:19 Hm...ja bym zostawił ten kod, dorobił tylko obsługę myszki :) Albo go po prostu częściowo wywalił i zrobił tylko samą myszkę... ;p |
|
CTRL85 Temat założony przez niniejszego użytkownika |
» 2011-11-24 21:30:37 Tego kodu nie wywalę, bo zależy mi żeby można było wybierać i klawą i myszką... jak "dorobić tylklo obsługę myszki"? Musiałbym pozamieniać na if'y i nie było by problemu: if(menu == 0 || mouse_x > liczba && mause_y > liczba) |
|
hincu |
» 2011-11-24 21:32:37 pobieraj pozycje x,y myszki i porownaj je czy sa na danej pozycji (tutaj wysokosc i szerokosc) danego objektu w menu jesli pozycja sie zgadza to podswietl : P a gdy kliknie to wywolaj dany event |
|
CTRL85 Temat założony przez niniejszego użytkownika |
» 2011-11-24 22:11:48 Wiem jak to zrobić, ale sie pytam, czy można użyć do tego switcha :P |
|
malan |
» 2011-11-24 22:58:45 Wiem jak to zrobić, ale sie pytam, czy można użyć do tego switcha :P |
Do obsługi myszki? Można, ale if sprawdzi się lepiej. Wiesz, że ten Twój switch można zastąpić jedną linijką? Przy założeniu, że: menu_NowaGra = 0 menu_Zasady = 1 menu_Credits = 2 menu_Wyjscie = 3 menu_NowaGra = 4 kod mógłby wyglądać tak: masked_blit(( BITMAP * ) pliki[ menu ].dat, screen, 0, 0, 295, 60,( BITMAP * ) pliki[ menu ].dat->w,( BITMAP * ) pliki[ menu ].dat->h );
|
|
CTRL85 Temat założony przez niniejszego użytkownika |
» 2011-11-25 14:14:23 Dzięki za odpowiedzi :) |
|
« 1 » |