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
Kategorie bazy artykułów
Artykuły -> Game Maker -> Kursy GML
Treść artykułu
Zmienne w GM
autor: Tymon (6.12.05)
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...

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?

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
93 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 93, userów: 0, ukrytych: 0


0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
Nikas (1:51, 28.02.17):
Jest dokładnie jak piszesz.
MaxGaming (1:43, 28.02.17):
Jak wrzucasz takie zdjęcia na insta to nie świadczy żebyś był tym na kogo pozujesz
MaxGaming (1:41, 28.02.17):
Znalazłezł się Rysiek Ridel który splifa nie umie rozpalić i nie wie co to maczanka XD Niech zgadnę walnąłeś kilka razy w nos i czujesz już dno? Xd Śmieszy mnie takie coś osobiście. Gdybyś sięgnął dna to byś inaczej gadał
Nikas (1:20, 28.02.17):
W swoim życiu upadłem kilka razy naprawdę poniżej poziomu człowieczeństa i brałem różne rzeczy. Naprawdę nie potrzebuję nauk, jeszcze o paleniu, od nieznajomego typa na gmc, bo nie zaskoczysz mnie niczym.
MaxGaming (0:58, 28.02.17):
A jak chcesz pogadaćo tym jaki syf ci wwalają do twojego "naturala" to możesz na PW podyskutujemy bo już trochę widziałem w tym temacie i widzę że jesteś z tych oświeconych że nie da się przecież nic ze splifem złego zrobić xd
Nikas (0:58, 28.02.17):
Lol.
MaxGaming (0:57, 28.02.17):
a jak ci się źle rozpala(mówimy o tytoniu) to po prostu najpierw opal sklejenie zapalniczką(podgrzej, nie podpal) to ładnie wysycha i nie ma żadnych problemów z rozpalaniem
MaxGaming (0:56, 28.02.17):
NIGDY JA ANI NIKT KOGO ZNAM NIE DMUCHAŁ XD ale skończmy temat serio w SB bo to nie jest miejsce wgl na takie szczegółowe rozmowy i pójdzie zaraz warn od 3F drugi raz :/
MaxGaming (0:55, 28.02.17):
Nadmiar bletki możesz mieć tylko z przodu i on ładnie sam się spala inaczej to nie wiem jak ty to robisz. Iskrzy jak jest maczanka(zazwyczaj tylko jakiś brix żeby na wadze było więcej, są też mity o dopach, ale na dopalaczach nigdy z iksrzeniem się nie spotkałem), popytaj w takim razie znajomych a jak chcesz maczać w krzystale to powodzenia xd I nie ucz ojca dzieci robić ;p
Nikas (0:41, 28.02.17):
Uuuu prosze, mamy tutaj widzę prawdziwego gracza, nook. Nie wiem skąd ta teoria z maczaniem. W czym maczany? W mieszance wody z fetą? Mefem? Może w kwasie? 8 lat palę i nie spotkałem takiego towaru. Jedynie maczarny w cukrze co się brylił i był gówniany. Ziomek palił jointa. Czasami jak się słabiej odpali to w jednym miejscu jest nadmiar bletki w który dmuchasz. I akurat uchwyciłem ten moment proszę pana eksperta. Podmuchaj sobie w jointa następnym razem to zobaczysz, piąteczka.
MaxGaming (0:39, 28.02.17):
Nie mogłeś po prostu pociągnąć zamiast on dmuchać? XDD Albo coś źle był "skonstruowany" ale już nic o tym nie piszę więcej bo będzie znowu warn xd
MaxGaming (0:38, 28.02.17):
Nigdy nie iskrzył mi spliff i nigdy nie dmuchał mi nikt żebym go lepiej rozpalił XD
Nikas (0:08, 28.02.17):
Ziomek dmuchał w niego żeby rozpalić, wiesz, tak to już działa na tej planecie. Jak dmuchasz w coś co się pali lub tli, to się rozpala jeszcze bardziej i uwaga - mogą lecieć wtedy iskry!
MaxGaming (23:53, 27.02.17):
BTW czemu twój spliff ze zdjęcia na insta się iskrzy? Tak wygląda na zdjeciu czy palisz maczane? XDD
Nikas (22:56, 27.02.17):
A dzięki.
Wojo (22:37, 27.02.17):
mocne foty xD
Nikas (22:34, 27.02.17):
Oczywiście, że mam instagram: www.instagram.com/krabonszcz
Wojo (22:23, 27.02.17):
gmclan to sekta
Czołg Krymski (22:22, 27.02.17):
jeszcze jest gmclan
Wojo (22:13, 27.02.17):
teraz cały internet kręci się w okół tych kilku stron
Wojo (22:13, 27.02.17):
teraz popularnosc zyskalbys zakladajac insta na swoje prace albo jakis fanpage
Fervi  (21:24, 27.02.17):
Nie wiem, ale kolega publikuje i ktoś go tam nawet obserwuje
Nikas (21:16, 27.02.17):
Czy ta strona jeszcze żyje?
Fervi  (20:57, 27.02.17):
Deviantart?
Nikas (20:28, 27.02.17):
Hej ludzie, wiecie gdzie dobrze promować swoje prace? Chodzi mi o rysunki itp.
Wojo (19:31, 27.02.17):
xD
Nikas (18:48, 27.02.17):
HHAHAHAHAHA
Exigo (18:33, 27.02.17):
Taaaaaaaaa?
PatrykPlayingPOLSKA (16:43, 27.02.17):
Ta ?
Wojo (14:03, 27.02.17):
kuncu
Chell (6:58, 27.02.17):
Jimmy Kimmel świetny człowiek
I am vader (6:54, 27.02.17):
6.1 był pod win98? Ja pitole, ja zaczynalem od 5.3A(z jakiegos powodu), wiedzialem ze to antyki, ale myslalem ze XP'kowe.
PatrykPlayingPOLSKA (23:12, 26.02.17):
Nostalgy scr.hu/RZgByv
Nikas (22:08, 26.02.17):
Echhhhhhhhhh.
ediepl (21:23, 26.02.17):
Nie wymagaj aż tyle od Nikasa
Sutikku (20:52, 26.02.17):
a wystarczyło luknąć niżej, że uploader nie działa
Nikas (20:31, 26.02.17):
Pierwsza liga z nagrodami i nikt nawet nie wysłał ani jednej, zesrałem. xDDDDDDD
Sutikku (19:58, 26.02.17):
a uploadder nie dziala, wyscig z czasem
Sutikku (19:57, 26.02.17):
3 minuty zeby wrzucic gre
Danielus (19:14, 26.02.17):
Na codingame ruszyły wczoraj kolejne 8-dniowe zawody. Problem całkiem fajny bo walka o fabryki przy pomocy androidów.
Threef (18:59, 26.02.17):
Albo nie bo nie chce mi się.
Threef (18:57, 26.02.17):
Zaczynam grę na ligę!
Uzjel (18:51, 26.02.17):
Uploader nie działa, prace z Tury #156 wrzucajcie do odpowiedniego tematu forum.gmclan.or...showtopic=33226
Czołg Krymski (21:25, 25.02.17):
jakby co zapraszam do zagrania w moją turową grę
Sutikku (20:02, 25.02.17):
mam 24h hmmm, idę wygrać jakąś gierkę
I am vader (4:12, 25.02.17):
W życiu nie korzystałem, zrezygnowałem kompletnie z klocków jakieś 8-9 lat temu.
XBlacKX (0:09, 25.02.17):
wiesz gdzie mógłbym dostać jakieś? zwiedziłem cały internet i tak jak kiedys było tego od cholery teraz tylko jednego liba znalazlem i to na gmclanie
I am vader (23:58, 24.02.17):
rozszerzenia Drag and drop, ale nie wiem ktore mogles miec zainstalowane
XBlacKX (23:17, 24.02.17):
kiedyś miałem taką paczkę i miałem tam gdzie "move, main1 main2 draw" itd dodatkowe zakładki z różnymi funkcjami
XBlacKX (23:16, 24.02.17):
jak się nazywały te paczki z dodatkowymi "ikonkami" co można przeciągać?
Ankieta
» Czy jesteś szczery odpowiadając w ankietach w Internecie?
Tak
Nie

GMCLAN to serwis o programie Game Maker i nie tylko.
Copyright © 2002-2017. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!

[ Czas generowania strony: 0.01519 sekund ] [ Liczba zapytań MySQL: 16 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev