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:

Stabilna
2024.13.1.193 • 2024.13.1.242
wydana 87 dni temu
LTS
2022.0.3.85 • 2022.0.3.99
wydana 222 dni temu
Beta
2024.1400.0.841 •
2024.1400.0.836
 0.17.0

wydana 10 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
36 użytkowników online na discordzie:
Grela, Nikas, Alice, LeD, Carl-bot, 🧁Cupcake🧁, pABLO, Jamabaiz (Matrix_), Andrzej Apparition, Cosplyfanka, Wielki Druid, Alkapivo, OdrzuconyKrakers, Radek Ignatów, Kalor, r..., Threef, PokojowyPatrol, HappyOrange, Pako, Arrekin, Dyno, 🆅🅸🆃🅾74🅼, szmalu, Danieo, g..., Kandif, Borek, moeglich, s..., Krzysiek1250, h..., Shockah, Nero, PeekoHiko, m...
Shoutbox
gnysek (10:36, 04.07.25)
Bo wszyscy piszą na discordzie :)
M
Modnar23 (20:08, 29.06.25)
Ja po 13 latach postanowiłem się zalogować i widzę, że straszne pustki na forum. Kiedyś to aż huczało na forum. :)
Chell (08:18, 26.06.25)
to masz krótką pamięć, bo od 2014 jakoś nie wiadomo ilu nowych userów nie przybyło :-D
p
pablo1517 (18:34, 16.06.25)
Ja w sumie żadnego z tych nicków nie kojarze poza Gnyskiem xD
gnysek (10:00, 16.06.25)
Odwiedzić starych dobrych znajomych.
S
Sutikku (01:48, 14.06.25)
nie wiem który to już rok, że ciągle mechanicznie wchodzę na gmclan, w sumie sam nie wiem po co
S
Sutikku (01:47, 14.06.25)
SIEMA! U mnie znośnie
p
pablo1517 (21:48, 07.06.25)
Siema wszystkim! Co tam slychac?
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
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?