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.2.0.132 • 2024.2.0.163
wydana 43 dni temu
LTS
2022.0.2.51 • 2022.0.2.49
wydana 182 dni temu
Beta
2024.400.0.532 • 2024.400.0.551
wydana 14 dni temu
= IDE, = Runtime
Użytkownicy online
2 użytkowników aktywnych:
gości: 1, userów: 1
 Korodzik
(~ostatnie 15 minut)
Discord
32 użytkownicy online na discordzie:
Kysiu, s..., Alice, Carl-bot, Grela, Wielki Druid, Add92, DungeonFairy🧚, Kowu, OdrzuconyKrakers, fervi, Kalor, antek, LadyLush, MKP (GEM), Pako, Arrekin, yazaa, Dyno, 🆅🅸🆃🅾74🅼, szmalu, LeD, Ulti, 🧁Cupcake🧁, bagno, Tidżi, l..., Alkapivo, moeglich, Nikas, Shockah, Kandif
Shoutbox
gnysek (20:44, 11.04.24)
Niektórzy dlatego wybierają GMEdit. Ale ja liczę na Code Editor 2, tylko na razie zbyt zbugowany jest.
Tymon (16:11, 11.04.24)
Stitch dla mnie osobiście jest lepszy bo nie musze kopać się z interfejsem GMa i mogę tylko pisać kod.
Tymon (16:05, 11.04.24)
Yes. Obecny nie jest taki zły, jak zainstalowałem najnowszą stabilną to w porównaniu z tym czego używałem... 10 lat temu...? Wszystko wydaje się lepsze.
gnysek (22:48, 10.04.24)
bscotch/stitch ? Ja czekam na fixy do nowego edytora, bo wszystko wydaje się dziś lepsze od tego obecnego :D
Tymon (19:54, 10.04.24)
Hm, Stitch okazuje się całkiem dobrą alternatywą dla wbudowanego edytora
Wojo (22:16, 08.04.24)
siemano huder myślałem, że zniknąłeś całkiem z gmclanu bo na discordzie cie nie ma :D
I am Lord (00:37, 05.04.24)
O dzięki :D
gnysek (09:58, 02.04.24)
Znalazłem na podstawie jego postów: youtube.com/@Jakim_
I am Lord (20:16, 01.04.24)
Ktoś ogarnia jakie konto miał Jakim na YT?
gnysek (16:07, 29.03.24)
Nowy Edytor kodu jednak po świętach
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?