Skocz do zawartości

Czym się różnią funkcje od zmiennych


gol350

Rekomendowane odpowiedzi

Myślałem że, funkcje różnią się od zmiennych tym że zmienne deklarujesz sam ,a funkcje są już wbudowane w program, ale przeczytałem w pomocy ,że funkcje też można sobie wymyślić samemu. Jak to możliwe ,że program może odczytać za co odpowiada zmienna lub funkcja zdeklarowana przeze mnie (wymyślona przeze mnie) i może tą zmienną wykonać ? 

 

Nie śmiejcie się ze mnie .Jestem ciemny w GML-u.

 

np:zmienna "test=0" .Skąd program może wiedzieć za co ona odpowiada.

Odnośnik do komentarza
Udostępnij na innych stronach

funkcje różnią się od zmiennych tym że zmienne deklarujesz sam ,a funkcje są już wbudowane
a moło to mamy wbudowanych zmiennych? np sprite_index?
może tą zmienną wykonać
hm.. to działa tak: zmienna = 'instance_destroy()', a jej wywołanie to execute_string( zmienna )

takie coś może działać, ale mimo wszystko nie możemy tego nazwać własną funckją.

 

W gm można dodawać skrypty - zapisujesz kawałek kodu, który po podstawieniu paremtrów/argumentów będzie działał, funkcjonował i wyglądał zupełnie jak wbudowane funkcje gm'a

 

Ale jak wymyślę swoją funkcję to skąd program wie jak ją wykonać ,skoro ta funkcja nie jest wbudowana w program.
po stworzeniiu swojego skryptu wywołujesz go przez nazwa_skryptu( argument1 , argument2... )
Odnośnik do komentarza
Udostępnij na innych stronach

a moło to mamy wbudowanych zmiennych? np sprite_index?hm.. to działa tak: zmienna = 'instance_destroy()', a jej wywołanie to execute_string( zmienna )

takie coś może działać, ale mimo wszystko nie możemy tego nazwać własną funckją.

 

W gm można dodawać skrypty - zapisujesz kawałek kodu, który po podstawieniu paremtrów/argumentów będzie działał, funkcjonował i wyglądał zupełnie jak wbudowane funkcje gm'a

 

po stworzeniiu swojego skryptu wywołujesz go przez nazwa_skryptu( argument1 , argument2... )

 

Ale żeby taki skrypt działał to na logikę trzeba wytłumaczyć programowi co ten skrypt ma zdziałać

Odnośnik do komentarza
Udostępnij na innych stronach

Jesli masz w skrypcie "jakimstam"

 

 

draw_sprite(x,y,false,lol)

 

to jesli wywołasz go w drawie to to bedzie to samo jakbys napisał tam

draw_sprite(x,y,false,lol)

 

Inna sprawą sa argumenty dzieki ktorym mozesz zmieniac dane w skrypcie np :

jakistam():

 

x = argument0

y = argument1

sprite = argument2

 

draw_sprite(argument0,argument1,false,argument2)

 

Wtedy wywołujesz tą funkcje nie tak : jakistam() tylko jakistam(500,250,spr_lol);

 

Jest chyba na gmc kurs o argumentach i skryptach, poszukaj.

Odnośnik do komentarza
Udostępnij na innych stronach

On chyba nic nie rozumie...nie trzeba programowi nic tłumaczyc, bo nie tworzymy nic nowego. łaczymy poprostu te wbudowane funkcje ze sobą i zmiennymi i to tak dziala. nie tworzymy nowego swiata ;]

 

AHA czyli wszystko jest już wbudowane w GM-a ,a my tylko tworzymy nowe nazwy ,dane ...itp

Odnośnik do komentarza
Udostępnij na innych stronach

no cos takiego ale... łącząc coś z czymś powstanie Ci niby cos nowego, ale nigdy nie bedzie to nieznane programowi. chyba ze zle wpiszesz, zla skladnia itd. nie wiem jak Ci to inaczej powiedziec, dla mnie to jest oczywiste. musisz troche pomyslec nooo

 

Dobrze mi to wytłumaczyłeś . Po prostu łącząc różne funkcje wychodzi coś nowego. Zależy od tego co z czym połączyć.

Odnośnik do komentarza
Udostępnij na innych stronach

Moze nie napisze nic odkrywczego ale przyklad.

 

1 + 2 = 3

 

Mozna to tak zoobrazowac ze cyfry to zmienne a dodawanie to funkcja. Za pomocy dodawania mozna zapisac mnozenie, a potegowanie mozna za pomoca mnozenia. Tak samo jest ze zmiennymi i funkcjami. :P

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

To może po kolei? Zmienna to jest coś co przetrzymuje wartość, funkcja, to jest coś co wykonuje czynności. Np. kartka papieru przetrzymuje zmienne, a niszczarka papieru wykonuje funkcje :) Albo telefon trzyma numery, a wciśnięcie guzika wykonuje funkcję dzwonienia, pod jeden z numerów (zmiennych).

Odnośnik do komentarza
Udostępnij na innych stronach

Miałeś funkcje na matmie :P ?

 

Zmienna to tak jakby kartka na ktorej przetrzymujesz cos. Funkcja to coś co tj. wkładasz tam argumenty (ktore sa zmiennymi (kartkami)), w środku coś się z tą kartką dzieje i wychodzi coś zupełnie nowego xD

 

A jak nie rozumiesz to poszukaj na necie kursów c++ a tych jest dziesiątki, i tam poczytaj o funkcjach które są budowane podobnie.

 

ja sie nauczylem na takim przykladzie:

funkcja dodawanie (argument0,argument1)

{

wynik = argument0+argument1

return wynik

}

Odnośnik do komentarza
Udostępnij na innych stronach

To może po kolei? Zmienna to jest coś co przetrzymuje wartość, funkcja, to jest coś co wykonuje czynności. Np. kartka papieru przetrzymuje zmienne, a niszczarka papieru wykonuje funkcje :) Albo telefon trzyma numery, a wciśnięcie guzika wykonuje funkcję dzwonienia, pod jeden z numerów (zmiennych).

 

To rozumiem, np:

 

 

zmienna : kartka=1

 

funkcja : move_contact_all(90,30)

Odnośnik do komentarza
Udostępnij na innych stronach

No, a teraz po co robic własne funkcję? A po to, żeby nie wpisywać za każdym razem do innego obiektu ten sam kod (w przypadku jeśli są to np. jednostki czyli dla każdej trzeba stworzyć ruch) lub chcesz sobie "skrócic" pracę. Ja na początku nie kapowałem jak się robi funkcje. Robiłem skrypt 'script0' i pisałem w nim np tak:

GML
mojafunkcja(argument0,argument1)

{

draw_text(argument0,argument1,'blbalala');

}

A to było kompletnie, źle tylko nie wiedziałem czemu. Później po zbadaniu paru przykładów skapłem się o co chodzi. Nazwa skryptu np. 'draw_blbalala' to równocześnie nazwa funkcji. w edycji piszesz tylko klamry wewnątrz których piszesz np. to:
GML
draw_text(argument0,argument1,'blbalala');
i gotowe. Teraz tylko wywołać tą funkcję w drawie pisząc: draw_blbalala(5,40);
Odnośnik do komentarza
Udostępnij na innych stronach

ja sie nauczylem na takim przykladzie:

funkcja dodawanie (argument0,argument1)

{

wynik = argument0+argument1

return wynik

}

 

Taki sam chciałem zaproponować xD.

Faktycznie, programowi należy wytłumaczyć co twoja funkcja ma robić, a tłumaczysz to pisząc JEJ treść :P.

Przykład

Tworzymy sobie funkcje która będzie dodawać 2 argumenty, towrzymy po to zeby nie wpisywac ciagle ze cos tam rowna sie to + tamto

Używanie funkcji polega na wpisaniu jej nazwy a w nawiasie podanie koeljnych argumentów np. sumuj(2,2), co powinno zwrócić do programu wartość = 4, teraz jak to napisać? Dodajemy "script" sumuj a w nim:

GML (sumuj)
return argument0+argument1;

// to dosyć nie skomplikowana funkcja :P return odpowiada za zwracanie wartości do programu

Załóżmy, że teraz mamy jakiś obiekt który jest już tak "zaprogramowany" aby rysował na środku ekranu wartość swojej zmiennej lokalnej wynik.

Wystarczy w jego create teraz użyć naszej funkcji:

GML (create)
wynik=sumuj(2,3);

// tak jak leci, 2 to argument0 a 3 to argument1 | return sprawia, ze

//wartość sumowania jest zwracana odrazu do zmiennej wynik.

 

Ot i cała filozofia. Program ma wszystko jak na dłoni. Wchodzi do funkcji i widzi:

return argument0+argument1;

Aha, czyli mam zwrócić to co uzytkownik podal zaraz po nawasie (arg0) + to co dal po przecinku(arg1)

 

Myślę, że to troszkę rozjaśni sprawę xD

 

Ciekawostka, jeśli nie podasz żadnych argumentów przybierają one domyślną wartość = 0. It's more of Pablo's USELESS KNOLEEEDGE!

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...