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.11.0.179 • 2024.11.0.227
wydana 14 dni temu
LTS
2022.0.3.85 • 2022.0.3.99
wydana 30 dni temu
Beta
2024.1100.0.713 •
2024.1100.0.726
 0.14.0

wydana 22 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
Shoutbox
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ę
gnysek (11:46, 17.11.24)
Witamy, witamy!
baca (12:22, 16.11.24)
To już 25 lat.. Witam po paru latach nieobecności.
gnysek (11:05, 15.11.24)
Natomiast obecne forum istnieje od 2004, jak z iglu.cz na gmclan.org przeszliśmy i od tego czasu nie było resetów danych.
gnysek (12:35, 13.11.24)
Ogólnie GMCLAN istnieje 22 lata, ale na to trofeum nie zrobiłem (jeszcze xD)
Chell (20:41, 08.11.24)
wow, ta emotka w ogóle nie wygląda jak : O xD
Chell (20:40, 08.11.24)
tylko? :O 4tk ma 15
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?