Ten artykuł został stworzony dla starszych wersji GameMakera i może nie być aktualny.

Efektowne menu

Niedziela, 25 Września 2005, 21:13
Czas czytania 2 minuty, 18 sekund
Zgodne z GM: gm6
Jak zrobić zaawansowane menu.
TYLKO GAME MAKER 6.1

tworzymy nowy obiekt obj_menu. Dajemy kod w create:
kodalpha=0;
step=0;
kursor=0;
m[0]='Nowa gra';
m[1]='Wczytaj Grę';
m[2]='Zakończ';
kursor_max=2;
teraz dajemy kod w step:
kodif step=0
{
if alpha<1 then alpha+=0.1 else{
alpha=1;
step=1;
}
}

if step=2
{
if alpha>0 then alpha-=0.1 else{
instance_destroy();
}
}
w draw:
koddraw_set_alpha(alpha);
for (i=0; i<=kursor_max; i+=1;)
{
if i=kursor then draw_set_color(c_white) else draw_set_color(c_black);
draw_text(0,0+(40*i),m[i]);
}
w key press up dajemy kod:
kodif step=1
{
if kursor>0 then kursor -=1 else kursor=kursor_max;
//ewentualnie: sound_play(muzyczka);
}
w key press down dajemy kod:
kodif step=1
{
if kursor<kursor_max then kursor +=1 else kursor=0;
//ewentualnie: sound_play(muzyczka);
}
w key_press enter dajemy kod
kodif step=1
{
step=2;
//ewentualnie: sound_play(muzyczka);
}
i na sam koniec w on destroy dajemy kod:
kod
draw_set_alpha( 1 );
switch kursor
{
case 0: /*gdy wybrano nowa gra*/; break;
case 1: /*gdy wybrano wczytaj*/; break;
default: game_end();
}

Teraz tłmaczę o co chodzi:
W CREATE definiujemy zmienną alpha, która odpowiada za rozjaśnianie i przyciemnianie menu.
Zmienna step pomaga nam to kontrolować.
Zmienna kursor odpowiada za aktualną pozycję kursora.
Zmienne m[0]...m[n] odpowiadają za kolejne pozycje w menu
Zmienna kursor_max, musi być równa liczbie n z poprzedniej zmiennej (w tym wypadku 2)

W STEP zajmujemy się opoeracjami na rozjaśnianiu i przyciemnianiu menu.

W KEY_UP i KEY_DOWN operujemy na zmianie pozycji kursora, ale tylko gdy step=1 czyli menu jest widoczne i ani się nie rozjaśnia, ani też nie przyciemnia.

W ENTER nakazujemy się obiektowi przyciemniać, zmieniając step na dwa, tym samym unieruchamiając operacje na kursorze. Akcja w step doporowandzi do powolnego zniknięcia menu, a na końcu zniszczy go.

W DESTROY dajemy akcje jakie nalezy wykonać po wybarniu konkretnego menu. Dajemy je dopiero tutaj, bo w tym momencie obiekt zniknął, więc musi się coś wydarzyć. Najlepiej zrozumiesz to gdy zobaczysz skrypt w akcji.

W DRAW w pętli FOR, malujemy menu. Ustawiamy prześwitywalność na alpha, można dodatkowo ustawic rozmiar czcionki (przed pętlą). W pętli ustawiamy kolor czcionki na czarny, lub na biały gdy aktualny tekst odpowiada pozycji kursora.

Dla początkujących skrypt ten może być dość skomplikowany, ale sam strouję go w praktyce od dość dawna, w róznych modyfikacjach (nie tylko do menu, ale np. do plansz z wpisywaniem imienia, plansz tekstowych, oraz plansz z pytaniami). Po drobnych modyfikacjach w draw, można uzyskac naprawdę wspaniałe efekty, włącznie z kursorem oraz tłem dla menu. Ten sam skrypt został zastrosowany w 80% moich gier.
Komentarze (łącznie 63, wyświetlam 16 - 30):
t
trubox (śro., 10 Sty. 07, 19:54)
#16

Kurde ludzie jak to sie robi?? Robie np. create i wrzucam do środka klocek ,,execute a piece of code'' tam wpisuje odpowiedni kod i dalej tak samo i co mam jeszcze zrobic?? Jakiego sprie'a narysowac?? Jak wlaczam gre to mi sie pokazuje normalnie tam boisko i ludziki! plz o odp.

Dark Maximal (śro., 10 Sty. 07, 19:56)
#17

Pomyśl, skąd mamy wiedzieć, jak zbudowana jest Twoja gra i czy menu nie gryzie się z innym obiektem? Opisz wszystko dokładniej na forum.

t
trubox (śro., 10 Sty. 07, 21:03)
#18

W grze jets jaden room(nic w nim specjalnie nie zmienialem tylko wstawilem postacie i inne pierdoly), tematyka gry jest pilka nozna :) jest 2 gosci maja ustawione tylko ruchy na klawiaturze i kolizje z pilka i scianami, pilka ma zaznaczone latanie w roznych kierunkach i kolizje z zawodnikami(wszyskie kolizje sa ustawione na dokladnie i wszystkie obiekty). Ostatnim objektem jest sciana nie ma zadnych kolockow wlozonych. Poza tym jest background trawa i to wszystko nie mam nic wiecej pomieszane... Tyle tylko wiem :) Mam nadzieje ze ktos mi pomoze!

dziadekkleofas (Czw., 11 Sty. 07, 13:08)
#19

Dużo nam to mówi.

gnysek (Czw., 11 Sty. 07, 15:27)
#20

może wstaw obiekt z menu na mape...

t
trubox (Wto., 16 Sty. 07, 19:24)
#21

ale jaki objekt jak tam nawet sprite'a nie podaja jak zrobic...

Macios (Pią., 26 Sty. 07, 02:36)
#22

nie trzeba robic zadnych spritow, wystarczy ze wstawisz te menu do romu i to wszystko, pokaze ci to w postaci znaka zapytania, a tak poza tym to bardzo polecam te menu :) bardzo mi sie spodobało :)

Ranmus (Sob., 21 Kwi. 07, 16:51)
#23

Uwaga, nie polecam skryptów z tego artykułu - kanał alpha nie jest przywracany do pierwotnej wartości. Jako częściowe rozwiązanie tego błędu dodałem w artykule, event destroy "draw_set_alpha(1);". Gnysek, popraw całą resztę teraz. :)

Tymon (Sob., 21 Kwi. 07, 17:19)
#24

Ranma, a na końcu kodu w draw nie można było tego dać? :)

m
~mimek (Czw., 03 Maj. 07, 11:13)
#25

a jeszcze jedono : dlaaczego nie działa nowa gra???? prosze o szybka odp

Tymon (Czw., 03 Maj. 07, 11:29)
#26

To sobie zrób żeby działało. :P

r
rafal1 (Nie., 04 Lis. 07, 22:14)
#27

mi tez nowa gra niedziala wytlumaczcie mi prosze co trzeba jeszcze zrobic

blackmaul (Pon., 05 Lis. 07, 15:39)
#28

A oczekiwałeś, że jak wklepiesz powyższy kod to będziesz mieć już skończoną grę? :)

gnysek (Pon., 05 Lis. 07, 16:03)
#29

case 0: /*gdy wybrano nowa gra*/; break;

wpisz sobie powyżej, co ci potrzebne

Misztrzunio (Czw., 27 Gru. 07, 12:32)
#30

Moim zdaniem, by było wygodniej przydała by się funkcja menuAdd, a jej kod:
m[menu_max] = argument[0];
menu_max += 1;
Będzie wygodniej ;) .

Najnowsze wersje GameMakera:

Stabilna
2024.13.1.193 • 2024.13.1.242
wydana 50 dni temu
LTS
2022.0.3.85 • 2022.0.3.99
wydana 185 dni temu
Beta
2024.1400.0.815 •
2024.1400.0.815
 0.17.0

wydana 8 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
41 użytkowników online na discordzie:
Nikas, Alice, LeD, Nitro Slav, Carl-bot, Bartuszewsky, p..., 🧁Cupcake🧁, GibkiKaktus, Wielki Druid, Draczeq, 𝕳𝖚𝖌𝖔 𝕲𝖔𝖓𝖝𝖆𝖑𝖊𝖝, PhysX ᴺⱽᴵᴰᴵᴬ, r..., Threef, Uzjel, Chell, HappyOrange, Moldis, Pako, Arrekin, yazaa, RogerDodg3r, Dyno, LadyLush, Deusald, szmalu, Miłosz, Marco, Voytec, Danieo, antek, Mtax, Sporek, l..., s..., Krzysiek1250, h..., Shockah, m..., xVANiLL
Shoutbox
gnysek (13:44, 10.04.25)
Za 3-4 miesiące GM przejdzie na wydania "półroczne", więc korzystanie z wersji beta żeby sprawdzić nowości będzie wskazane :P
Adriann (18:09, 08.04.25)
Odpowiadam, dzisiaj :D
Adriann (20:48, 04.04.25)
A kiedy te UI layery mają wejść do normalnej wersji gma?
gnysek (00:38, 11.03.25)
I jak, zobaczyłeś ? :D Trochę im zjechało na publiczny release, ale były już w ostatnich dniach lutego dostępne jak się wie, jak pobrać kandydatów do bety :P
Kuzyn (21:30, 05.03.25)
uwierzę jak zobaczę :P
gnysek (10:35, 18.02.25)
W ciągu 10 dni mają wyjść w końcu Layery UI :D
Wojo (10:25, 27.12.24)
Jak tworzyłeś* ah ta niecną autokorekta (kiedyś też stworzyłem apki na androida w sumie)
Wojo (10:23, 27.12.24)
O siemka baca, czasami myślę o tobie w kontekście tego jak tworzyłem apki na androida. Swoją drogą czasami zapominam, że forum istnieje bo cały ruch teraz utrzymuje się na discordzie, ale pora to zmienić!
Uzjel (20:17, 10.12.24)
Cały ruch przeniósł się na Discorda.
MagnusArias (17:43, 01.12.24)
O matko... a ja tutaj jestem od ponad 15 lat i czasami zaglądam... biernie bo biernie, ale czasem wpadnę
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?