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.0.190 • 2024.13.0.238
wydana  3 dni temu
LTS
2022.0.3.85 • 2022.0.3.99
wydana 129 dni temu
Beta
2024.1300.0.785 •
2024.1300.0.790
 0.16.1

wydana 15 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
2 użytkowników aktywnych:
gości: 1, userów: 1
 Adriann
(~ostatnie 15 minut)
Discord
43 użytkownicy online na discordzie:
Alice, LeD, Nitro Slav, Tymon, Carl-bot, lethian, Wielki Druid, Kysiu, Kowu, Kuzyn, OdrzuconyKrakers, fervi, 𝕳𝖚𝖌𝖔 𝕲𝖔𝖓𝖝𝖆𝖑𝖊𝖝, m..., 42traviss, r..., Threef, Uzjel, 🧁Cupcake🧁, antek, firemark, yazaa, Dyno, 🆅🅸🆃🅾74🅼, Deusald, szmalu, ZYGZAK, LadyLush, Marco, 21Lancz, bagno, Tidżi, Mtax, g..., Sporek, Kandif, l..., Cebul, Borek, s..., Add92, h..., Shockah
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?