Argumenty i skrypty

Niedziela, 13 Czerwca 2004, 12:30
Czas czytania 1 minuta, 48 sekund
Zgodne z GM: gm5 gm6 gm7 gm8 gms1 gms2
Z tego mini kursu dowiesz się jak w praktyce zastosować wybuchową mieszankę: argumenty + skrypty, czyli utworzyć własną funkcję.
Podam przykład stworzenia skryptu kontroli ruchu obiektu w 8 kierunkach, ze zmianą sprite'u i warunkiem, że miejsce docelowe musi być wolne. Żeby dobitnie pokazać różnicę zapisu, stworzę kod w dziale ANY KEY, a nie dla osobnych działów KEYBOARD PRESS UP, DOWN, LEFT i RIGHT...
Skrypt:
kodif ( keyboard_check ( vk_up ) && place_free ( x , y - 4 ) )
{
y -= 4;
sprite_index = s_gora;
direction = 90; //A to dla pozniejszego stworzenia strzalu...
}

if ( keyboard_check ( vk_down ) && place_free ( x , y + 4 ) )
{
y += 4;
sprite_index = s_dol;
direction = 270;
}

if ( keyboard_check ( vk_left ) && place_free ( x - 4 , y ) )
{
x -= 4;
sprite_index = s_lewo;
direction = 180;
}

if ( keyboard_check ( vk_right ) && place_free ( x + 4 , y ) )
{
x += 4;
sprite_index = s_prawo;
direction = 0;
}
    Aby ten kod zapisać lepiej, należy użyć argumentów. Wcześniej przypomnę, że aby wykonać jakiś skrypt bez pomocy klocków, należy podać jego nazwę wraz z nawiasem w innym skrypcie, przykładowo:kodnazwa_skryptu();    Argumenty są to wartości, którymi może operować przywołany skrypt. Podajemy je w nawiasie oraz oddzielamy przecinkiem, np. kodnazwa_skryptu ( direction , 5 , c_white , gracz.x );    Możemy podać maksymalnie 10 argumentów. Takimi argumentami posługujemy się analogicznie jak ze zwykłymi wartościami, ale ich nazwy to argument0 ... argument9.

    Teraz nowy zapis wyżej podanego kodu, w tym celu rozbiłem go na 2 skrypty, jeden w dziale ANY KEY obiektu w klocku PIECE OF CODE, drugi skrypt stworzyłem już normalnie i nazwałem go krok.

PIECE OF CODE, dział ANY KEY:
kodif ( keyboard_check ( vk_up ) )
{
krok ( 0 , -4 , 90 , s_gora );
}

if ( keyboard_check ( vk_down ) )
{
krok ( 0 , 4 , 270 , s_dol );
}

if( keyboard_check ( vk_left ) )
{
krok ( -4 , 0 , 180 , s_lewo );
}

if( keyboard_check ( vk_right ) )
{
krok ( 4 , 0 , 0 , s_prawo );
}
skrypt o nazwie krok:
kodif ( place_free ( x + argument0 , y + argument1 ) )
{
x += argument0;
y += argument1;
direction = argument2;
sprite_index = argument3;
}
    Dzięki takiej technice zapisu kodu możemy oszczędzić sporo czasu przy tworzeniu gry oraz skrócić jej kod. Po opanowaniu tego sposobu, będziemy umieli tworzyć własne funkcje.

Miłego testowania!
Komentarze (łącznie 7):
Choosen (Pon., 21 Cze. 04, 14:58)
#1

Głupio się czuję oceniając coś twojego :-) Na szczęście mam dla Ciebie pozytywny komentarz. Artykuł czytelny i przejżysty. Nie wydaje mi się żeby ktos mogł to wyjaśnić lepiej. Dałem 6 bo problem poruszany w artykule nie należy do najtrudniejszych ;-)

Ranma_man (Wto., 22 Cze. 04, 16:28)
#2

To ty jeszcze czytasz takie stare arty? Jak bede mial czas to wrzuce reszte. :)

CRASH (Pon., 26 Lut. 07, 16:54)
#3

Nawet spox... przyda sie :P

P
Patjar (Nie., 11 Mar. 07, 09:20)
#4

Swietny artykol, na pewno mi sie przyda :)

K
kasa100 (Nie., 24 Cze. 07, 17:47)
#5

spoko art THX

dżamper (Nie., 20 Sty. 08, 22:26)
#6

a ja się sam tego nauczyłem :] nowym się przyda :)

D
DamianD2111 (Nie., 17 Lut. 08, 17:56)
#7

Bardzo ułatwia tworzenie dla początkujących...

Najnowsze wersje GameMakera:

LTS
2026.0.0.16 • 2022.0.3.99
wydana 118 dni temu
Beta
2026.100.0.1149 •
2026.100.0.1098
 GMRT beta 0.21.0

wydana 13 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
2 użytkowników aktywnych:
gości: 1, userów: 1
 Borek
(~ostatnie 15 minut)
Discord
10 użytkowników online na discordzie:
Carl-bot, RogerDodg3r, Dyno, szmalu, bagno, Mtax, Borek, moeglich, g..., Shockah
Shoutbox
Kuzyn (12:04, 19.09.26)
:] :]
gnysek (13:01, 04.09.26)
Dzięki! :D
S
Sutikku (11:08, 04.09.26)
gmclan to moje go-to żeby sprawdzić czy działa mi internet
Wojo (16:25, 03.09.26)
Pytanie tylko co z tym faktem możemy zrobić my jako użytkownicy? - przede wszystkim udzielać się więcej. Ja ogólnie lubię dużo mówić, dużo pisać, mało robić, ale poza mną obecnie jest może kilku użytkowników, którzy coś tutaj wkleją raz na ruski rok.
Wojo (09:25, 03.09.26)
Fora internetowe wyhamowały już dawno temu, ale teraz to nawet zaciągnęły ręczny. Przecież nic się na nich nie dzieje na ten moment. Trzeba czekać, aż może aktywność wróci
gnysek (01:00, 22.08.26)
Będzie wkrótce spory plugin do GM z kilkunastoma QoL, trwają prace ;)
Wojo (11:35, 13.08.26)
Gratuluję i dziękuję w imieniu aktywnych użytkowników GMClanu!
gnysek (23:13, 12.08.26)
Szybkie info, że GMCLAN chodzi obecnie na cloudflare więc wyciąłem boty :)
Wojo (21:21, 28.06.26)
na ten moment czerwiec prezentuje się dość przyzwoicie jesli chodzi o ilosc wpisow w shoutboxie bo aż trzy! a taki styczeń zero :0
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?