Nasze strony: gmclan.org gameonly.pl ps-plus.pl gameswithgold.pl n-switch.pl hmt.pl
Fastbar
Powrót do strony głównej
Trzymaj pliki na gmclan.org!
Game Maker w pytaniach i odpowiedziach!
Polska dokumentacja
Tabela wyników ligi 24
Pobierz GM
Akademia GMCLANu
Kategorie bazy artykułów
Artykuły -> Game Maker -> Kursy GML
Treść artykułu
Zmienne w GM
autor: Tymon (6.12.05) | czas czytania: 4 minuty, 6 sekund
Czym jest zmienna? Jest to jakieś określone miejsce w pamięci komputera o określonej wartości, tekstowej bądź liczbowej. Za pomocą GMLa możesz definiować własne zmienne, wygląda to tak:
gml:<nazwa zmiennej> = <wartość>;I tutaj kilka uwag. W nazwie zmiennej nie mogą się znajdować spacje (zastępuj je znakiem '_'), nie mogą się znajdować w niej polskie znaki (zamiast 'ś' wpisz 's', zamiast 'ć' wpisz 'c' itd.) oraz nie może się zaczynać od liczby, a oto przykład kilku błędnie zdefiniowanych zmiennych:
gml:wysokość = 100;
10osoba = 'Jasio';
ilosc lat= 9;
W dobrym zwyczaju leży też stawianie znaku średnika ';' po wartości choć nie jest konieczne.

W GML znajdziemy też stałe (wartości ich nie można zmienić) które są wpisywane do pamięci wraz ze startem gry. Są to:
true - prawda (1).
false - fałsz (0).
pi - wartość pi (3.1415...).
Dwie pierwsze z nich przydają się w operacjach logicznych z których będziemy dość często korzystać =]

Mamy zmienną ale jej wartość chcemy zmienić, jak? Wygląda to tak samo jak definiowanie ich. Czyli:
gml:imie='Jasio';
lat=lat+10;
bierzacy_rok=2005;
rok_urodzenia=bierzacy_rok-lat;
itd. ;)

Zamiast znaku '=' możemy użyć jeszcze czterech innych:
-= - odejmuje od wartości zmiennej.
+= - dodaje do wartości zmiennej.
*= - mnoży wartość zmiennej.
/= - dzieli wartość zmiennej.
Używanie ich może być bardzo przydatne choćby ze względu skrócenia kodu bo możemy tak:
gml:lat=lat+10;A możemy tak:gml:lat+=10;Efekt jest ten sam a skróciliśmy troszkę kod. Pomyśl co będzie gdy nazwa zmiennej będzie miała 20 znaków długości ;)

Jak na początku wspomniałem mamy dwa typy zmiennych, tekstowe (string) i liczbowe (real). Trzeba pamiętać żeby do zdefiniowanych już zmiennych o jakimś typie (string bądź real) przypisywać wartość o tym samym typie, nie można zrobić tak:
gml://Definiuje nowe zmienne
lat=10;
imie='Jasio';

//Zmieniam ich wartość
lat='Jakieś 10 lat';
imie=0;Wyskoczy nam wtedy błąd i zakończy działanie gry, co nie jest nam potrzebne. Choć nie jest możliwe do wykonania coś takiego, możesz zrobić tak:
gml://Definiuje nowe zmienne
lat=10;
imie='Jasio';

//Zmieniam ich wartość
lat=real('Jakieś 10 lat');
imie=string(0);Tu już nie napotkamy błędu bo:
real(str) - zmienia wartość z string na real. Usuwa wszystkie znaki oprócz cyfr.
string(val) - zmienia wartość real na string.
Przydatne, będziemy później jeszcze z nich korzystać więc warto je zapamiętać. Jeszcze jedna informacja, real(str) i string(val) są funkcjami (o nich trochę więcej będzie później).

Teraz trochę o zasięgu działania zmiennych. Gdy zdefiniujemy zmienną w jakimś obiekcie to będzie ona dotyczyła tylko tego typu obiektów. Na przykładzie:
gml://Kod w obiekcie 'nr1'
lata=10;
//Kod w obiekcie 'nr2'
show_message(lata);Wywali nam wtedy błąd że obiekt 'nr2' nie ma zdefiniowanej zmiennej o nazwie lata. Jak więc zdobyć wartość zmiennej 'lata' z obiektu 'nr1' do 'nr2'? Jest coś takiego jak adresowanie do obiektów i wygląda ono tak:
<jakaś zmienna> = <nazwa obiektu>.<nazwa zmiennej>;
Zadziała to tak: zmienna o nazwie <jakaś zmienna> będzie miała wartość zmiennej <nazwa zmiennej> z obiektu <nazwa obiektu>. Możemy teraz poprawić kod:
gml://Kod w obiekcie 'nr1'
lata=10;
//Kod w obiekcie 'nr2'
show_message(nr1.lata);Wszystko zadziała jak trzeba. Przy okazji, funkcja show_message(str) wyświetla na ekranie komunikat o treści str =]

Są też zmienne globalne które dotyczą wszystkich obiektów. Ich definiowanie wygląda tak:
gml:global.wiek=10;
global.imie='Pietruś';
Odwołać się do zmiennej można tak samo :
gml:nowa_zmienna=global.jakas_globalna;Oprócz zmiennych i zmiennych globalnych mamy zmienne tymczasowe. Czasami musimy przechować jakąś informację i trzeba stworzyć jakąś nową zmienną ale kosztem stworzenia jej jest zmarnowanie miejsca w pamięci. Można by zdefiniować jakąś zmienną i ją potem skasować na końcu wykonywanego kodu i po to są te zmienne tymczasowe. Ich stworzenie wygląda tak:
gml:var zmienna_1, zmienna_2, ... zmienna_n;var mówi że te zmienne mają być skasowane po wykonaniu kodu.

To tyle jak na razie. W następnej części powiem trochę o warunkach a tymczasem wejdź do Game Makera i poćwicz trochę. Z czasem wszystko wejdzie ci samo do głowy =D
głosów: 24 | ocena: 7.91 oceń zasób | dodał: Tymon
Komentarze
stron: 21

2


av

gnysek (13:20, 10.04.2009)

dodał zmienną ?

av

kt1117 (15:07, 2.02.2010)

A poco te zmienne bo nie kumam

av

ZeroXbot (15:11, 2.02.2010)

o_O ?!! Po co?! Zmienne są po to by przechowywać rozmaite dane i na nich operować. Takie np. direction, czy speed to wbudowane zmienne i według ich wartości obiekt rusza się z daną prędkością w danym kierunku. Reszta w kursie...

av

gothicner (15:50, 18.02.2010)

Mam male pytanie. Jesli mam zmienna zycie1=100 to co mam zrobic zeby object posiadajacy ta zmienna zmienil sie w inny object?

av

gothicner (9:49, 19.02.2010)

sorki ze nie dokonczylem. ... w inny object gdy zmienna zycie1 dojdzie do zera?

av

lenin (9:55, 19.02.2010)

if zycie1<=0
{
instance_create(x,y,obj_nowy)
instance_destroy()
}
Daj to w step

av

Mentoss (10:01, 19.02.2010)

w kodzie obiektu, który ma się zmienic wpisz (w stepie)

if zycie1=0
{instance_change(i tutaj to, czego potrzebujesz)}

________________
na klockach:

klocek1: control / variables / test variable -> self; variable: zycie1; value:1; operation:smaller than; nie zaznaczasz NOT;


klocek2: main1 / objects / change instance-> self; wybierasz obiekt docelowy; wybierasz istnienie perform event'u (sam do końca nie wiem o co w tym performevencie chodzi )

av

lenin (10:09, 19.02.2010)

nie polecam instance_change, czasami jakieś głupie problemy się z tym robią. Bezpieczniej jest dać instance_create i instance_destroy()

av

Mentoss (10:19, 19.02.2010)

na kodzie racja... ale na klockach działa.

av

Egzekutor (11:26, 19.02.2010)

Omg a co to za różnica czy na kodzie czy na klocku ... ;/ Tu i tu czasem coś nie działa nie warto ryzykować.

stron: 21

2



Dodaj komentarz:
Treść:
Menu
Panel użytkownika
Jesteś niezalogowany!

Nie masz konta? Zarejestruj się
Użytkownicy on-line
6 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 4, userów: 2, ukrytych: 0
Uzjel, Adriann
Użytkownicy na czacie discord
SimianVirus7 (17:50, 28.05.20):
Ja mam zamiar kupić export na androida, fajnie jakby też jakaś promocja z tego wynikła
nowy_user (17:15, 28.05.20):
Na forum YoYo zadyma, sfrustrowani użytkownicy strajkują i żądają obniżenia cen licencji na konsole. Poszła już nawet petycja w tej sprawie, a niektórzy grożą zainstalowaniem Unity!
SimianVirus7 (21:26, 24.05.20):
GMS 2 Line Counter
SimianVirus7 (21:26, 24.05.20):
Dobra, Dzięki Threef, poszukałem i jest jakaś alternatywa do gms2
SimianVirus7 (21:18, 24.05.20):
szukam i chyba chodzi Ci o GMLPal
Threef (21:16, 24.05.20):
Do GMS1 był zewnętrzny program który podawał statystyki
SimianVirus7 (11:54, 24.05.20):
Można gdzieś zobaczyć podsumowanie ile linijek kodu jest napisane w całym projekcie? Wydaje mi się, że w gms1 gdzieś taka opcja była, a w gms2?
gnysek (13:15, 21.05.20):
Ranma kolejny raz robi na mnie cesję domeny i kolejny raz qpa
nowy_user (15:17, 11.05.20):
Jakieś jeszcze są, ale raczej mniej spektakularne. Żadnych znajomych twarzy nie dostrzegłem. Jakiś mecz w ping ponga w biurze.. czy inne mniej ciekawe rzeczy.
gnysek (11:19, 11.05.20):
Jeszcze jakieś są ?
nowy_user (21:16, 10.05.20):
Nie no, tak serio to Allie wrzucała różne filmiki z YoYo House na Discorda
nowy_user (20:50, 10.05.20):
Mam swoje źródła ;-) Przy okazji, czy pomylił Cię ktoś kiedyś na ulicy z Sebastianem Vettelem? Wyglądacie bardzo podobnie.
gnysek (23:27, 9.05.20):
Wow, skąd to masz
nowy_user (17:32, 8.05.20):
Ok, w takim razie wrzucam : www.youtube.com...h?v=p2X8VJjphY4
gnysek (14:33, 8.05.20):
Na tym jest tylko mieszkanie, nas nie ma: www.youtube.com...h?v=3Fonyl0gQWY
gnysek (14:29, 8.05.20):
Pewnie po pijaku
gnysek (14:28, 8.05.20):
Eeee, dawaj ten film
nowy_user (20:42, 7.05.20):
Filmu nie chcę wrzucać bez Twojej zgody (chociaż uspokajam - nie ma tam gorszących scen ;d tylko kulturalne śniadanko . Zazdroszczę przygody, musiałeś poznać wielu dzisiejszych GM'owych wyjadaczy.
nowy_user (20:40, 7.05.20):
Chyba tak, można się natknąć na jakieś filmiki na YT z yoyo house. Na jednym z nich Ty nawet występujesz w głównej roli co ciekawe na tym samym filmie jest też Nocturne, gwiazda wielkiej rangi na gmc ( dla tych, którzy nie odwiedzają gmc - Nocturne to gość o reputacji mniej więcej takiej, jaką u nas ma Tymon).
gnysek (14:25, 7.05.20):
Mają je jeszcze? Ten w którym ja mieszkałem, należał do Mike'a.
nowy_user (17:32, 6.05.20):
Hej, wiedzieliście, że YoYo ma swoje tzw. YoYo house, w którym przetrzymuje (dobrowolnie) swoich zagranicznych pracowników? To jest chyba coś na wzór domku Big Brothera, ciekawe...
SimianVirus7 (21:27, 4.05.20):
No u mnie się w sumie nic nie zmieniło, oprócz tego, że w pracy mam mniej zleceń i zamiast 8 godzin robię 3-4, chociaż od dzisiaj ma to wrócić na dawne tory :/
Sutikku (2:44, 4.05.20):
u mnie też izolacja to złoto, nonstop obiadki w domu, żyć nie chorować
gnysek (22:32, 3.05.20):
ja bym się cieszył izloacją, ale mam 3 baby w domu i do córki jeszcze córka sąsiadów wpada czasem
Threef (11:55, 2.05.20):
Mam alergię więc jestem szczęśliwy że nie muszę wychodzić.
Threef (11:54, 2.05.20):
Ja tam się fizycznie i psychicznie czuję doskonale.
Ignatus (10:49, 1.05.20):
Ranmus , dziękuje za wsparcie! Teraz dopiero odczytałem
exp (0:57, 1.05.20):
świra można dostać od tej izolatki
exp (0:57, 1.05.20):
psychicznie chyba nikt teraz nie jest w najlepszym stanie
ANtY (20:39, 30.04.20):
tylko fizycznie i to też tak se
SimianVirus7 (18:07, 30.04.20):
a zdrowi zdrowi dziękować
exp (0:20, 30.04.20):
co tam słychać gmclanowicze, wszyscy zdrowi?
Adriann (16:18, 29.04.20):
O, dziękuję bardzo
Konrad-GM (15:59, 29.04.20):
Propa chyba dalej ma go na gmclanowym uploaderze gmclan.org/up993.html
Adriann (14:20, 29.04.20):
Ma ktoś może Spartana Propy na dysku?
Threef (16:29, 28.04.20):
;D
gnysek (15:50, 28.04.20):
No ja czekam na cesję, to po Twojej stronie leży
Ranmus (15:21, 28.04.20):
Jak będziemy w Gdańsku, to możemy zrobić spotkanie po latach już z rodzinami
Ranmus (15:19, 28.04.20):
Btw. musimy się w końcu zgadać na cesję domeny.
Ranmus (15:18, 28.04.20):
@gnysek: Jestem dopiero na etapie pieluch.
Ranmus (15:16, 28.04.20):
I byłby na pierwszym roku studiów.
Wojo (15:15, 28.04.20):
Gdyby gmclan był człowiekiem to by już mógł legalnie kupić alkohol
Ranmus (15:09, 28.04.20):
Lata lecą, więc i ja jakiś czas temu zapuściłem korzenie.
gnysek (14:42, 28.04.20):
Zaraz, zaraz, co? Ranma też jesteś ojcem?!
Ranmus (13:47, 28.04.20):
Wsparte!
Ranmus (13:45, 28.04.20):
Dobra, nie było pytania, doczytałem na końcu wspieraczki.
Ranmus (13:44, 28.04.20):
Rozumiem, że trzeba je samemu wydrukować tak? Niestety nie mam aktualnie dostępu do kolorowej drukarki, choć mam w planach kupno. Czy wszystkie gry aktualnie wymagają koloru?
Ranmus (13:40, 28.04.20):
O proszę, kolekcjonuję planszówki od 3 lat, ale ostatnio przystopowałem ze względu na dziecko. Niestety roll & write nigdy nie próbowałem, bo trochę nie moja bajka, ale z chęcią wesprę i zamówię dla mojej kobiety.
Ignatus (9:22, 26.04.20):
Bardzo dziękuję Udało się już zebrać prawie 1600% zakładanego celu więc jest spoko
nowy_user (18:07, 24.04.20):
Ignatus rewelacja! Ja sam uwielbiam robić gry planszowe (hobbistyczne) a od zeszłego roku robię grę hybrydową ( gra + apka zrobiona w GM).Twoja inicjatywa jest super, będę śledził, jak to się dalej potoczy, bo będę chciał pójść podobną ścieżką! Jeszcze raz gratulacje!
Ankieta
» Ile powinny trwać tury Ligi 24?
24h
48h
54h (piątek od 18:00)
7 dni
inna długość (podałem w komentarzu ankiety)

GMCLAN to serwis o programie Game Maker i nie tylko.
[ Polityka prywatności ]
Copyright © 2002-2020. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus (ranmus.pl), © 2017-2020 {=|=} fable_inside();

[ Czas generowania strony: 0.02929 sekund ] [ Liczba zapytań MySQL: 13 ]