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)
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
2 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 1, userów: 1, ukrytych: 0
I am Lord
Użytkownicy na czacie discord
MaxGaming (14:14, 24.06.18):
Jedyne co mogłem zrobić to poprosić go o anulowanie na co nie odpisał
MaxGaming (14:14, 24.06.18):
Innym razem zaznaczyłem że gra w języku angielskim, dodatkowo była to gra Steam i gościu kupując mógł też spojrzeć na stream co jest napisane o języku. Dostałem negatyw bo gra nie zawiera języka polskiego
MaxGaming (14:13, 24.06.18):
I za to powiecinir dostałem 3 gwiazdki za czas wysyłki]
MaxGaming (14:12, 24.06.18):
Podczas sylwestrowej domówki u mojej uwczesnej dziewczyny usiadłem do kompa żeby mu to wysłać mimo że był sylwester i przed drugą transakcja została sfinalizowana
MaxGaming (14:12, 24.06.18):
Ja sprzedawałem kiedyś treści cyfrowe i to miałem napisane 24h robocze (wtedy takie rzeczy wpisywało się w opisie). Gościu kupił u mnie coś w sylwestra o po 23 to była sobota. Wysłał do 1 w nocy trzy e-maile kiedy wyśle
exp (0:34, 24.06.18):
polska jest zacofana m.in. właśnie przez takie myślenie. jakiś janusz cię oszukał, a ty się wahasz, czy wystawić negatywa xd
exp (0:32, 24.06.18):
jak miały być 24 godziny, a minęły trzy dni to dawaj najniższą ocenę
I am vader (22:26, 23.06.18):
A dobra, przeoczyłem.
Wojo (21:24, 23.06.18):
MaxGaming (17:06, 23.06.2018) Tak, napisał o 24h a minęły trzy dni robocze
I am vader (21:18, 23.06.18):
Max Wcale nie potwierdzil ze tak bylo napisane, wiec rownie dobrze moglo tam nie byc
Wojo (20:43, 23.06.18):
no jak koleś napisał na aukcji wysyłka wciągu 24 godzin a spóźnia się 3 dni to jednak jest problem
I am vader (19:20, 23.06.18):
Ludzie nie czytaja jaki jest przewidywany czas wysylki a potem marudza, debile po prostu
I am vader (19:20, 23.06.18):
Pracuje w sklepie internetowym i mielismy takie kawaly skurczybykow ktore dawaly negatywa za wyslanie po 2 dniach.
Wojo (19:01, 23.06.18):
zawsze to twoja subiektywna ocena
MaxGaming (18:24, 23.06.18):
negatyw na pewno nie xd
Wojo (18:24, 23.06.18):
i daj też negatywa żeby kupujący zobaczyli
Wojo (18:23, 23.06.18):
dawaj jedną a nie się pierdzielisz.. Typek trzykrotnie przekroczył termin wysyłki. Po miesiącu jakby ci wysyłał to zgłaszasz sprawę na allegro albo policji i żądasz zwrotu pieniędzy
MaxGaming (18:15, 23.06.18):
No właśnie ja się nie orientuje ile gwiazdek za co dawać. Wydaję mi się że 1 gwiazdka to jakby wysłał po miesiącu xd
Wojo (18:13, 23.06.18):
no to daj jedną a nie trzy... za coś takiego daje się negatywa
MaxGaming (17:23, 23.06.18):
Tak myślę właśnie że dam jakieś 3 gwizadki za czas realizacji
gnysek (17:16, 23.06.18):
ocenę daj niską xD
MaxGaming (17:06, 23.06.18):
Tak, napisał o 24h a minęły trzy dni robocze
gnysek (15:42, 23.06.18):
ale na aukcji pisał, ze wysyłka w 24h ? bo od dawna można taki parametr dawać. no i dni robocze wliczasz.
MaxGaming (15:13, 23.06.18):
Kupiłem klocki hamulcowe na allegro do swojej CBR i trzy doby mineły od zaksięgowania wpłaty do wysłania przez sprzedającego paczki. Jak ja nienawidzę polskiej mentalności mechaników i budowlańców. Wszystko na odpier.... Prawie nigdy żadna część do motocykla zamawiana przeze mnie nie zostaje wysłana jak przystało na współczesne standardy w 24h
Wojo (19:16, 22.06.18):
A gothic 17 lat temu... Jest prawie tak samo stary jak gmclan
MaxGaming (23:11, 21.06.18):
okej restart pomógł xd
MaxGaming (22:50, 21.06.18):
Jak otworzyć ten Splash Screen w android studio? Ten co wyskauje od razu po instalacji?
MaxGaming (22:49, 21.06.18):
a VC 16 lat temu
MaxGaming (22:46, 21.06.18):
ej co jeśli zainstalowałem andoid studio i studio64.exe nie chce się otworzuć? Po prostu nic się nie dzieje chociaż w procesach jest uruchomione
Wojo (21:41, 21.06.18):
A GTA 5 5 lat temu
Wojo (21:40, 21.06.18):
GTA 4 wyszło 10 lat temu
exp (20:45, 21.06.18):
a vice city to według mnie słaba gra. chociaż spędziłem z nią mnóstwo czasu
exp (20:44, 21.06.18):
nie byłem nigdy wielkim fanem tej serii, według mnie najlepsze było gta4
MaxGaming (19:37, 21.06.18):
SA znowu ceniłem za ten klimat, Nie rozumiem czemu gangsterzy mająbyć biali przecież wiadomo że nie było nigdy prawdziwego gangu białych tylko mafie i innego typu grupy przestępcze. Ta historia o wydostawaniu się z getto idealnie zgrała się z modą na gangsta rap
MaxGaming (19:36, 21.06.18):
Wydaje mi się że VC i IV to inny profil po prostu niż SA i V
MaxGaming (19:36, 21.06.18):
nie podoba mi się na nowo uproszczenie GTA i wszystkiego co z nim związane w GTA V. Za to dostajemy ogromną mapę i dużo funkcji które w sumie nie koniecznie są ciekawe typoow dla gry ale już dla zabawy poza fabularnej takq
MaxGaming (19:35, 21.06.18):
No i fabuła była genialna. GTA IV to gra która pod względem fabuły, postaci i ogólnie wykreowanego świata jest w mojej osobistej topce jeśli chodzi o gry w które kiedykolwiek zagrałem
MaxGaming (19:34, 21.06.18):
w GTA IV wyrzucono zbędne funkcje z SA które były błędem. Dodatkowo to miasto, ten NY na prawdę żył! To było coś pięknego
MaxGaming (19:34, 21.06.18):
GTA VC i 4 to kompletne gry, które mniej stawiająna sandboc a bardziej na grywalność
MaxGaming (19:33, 21.06.18):
GTA SA i V to gry żeby pobawić się, mało kto gra w to dla fabuły
MaxGaming (19:33, 21.06.18):
Natomiast GTA IV moim zdaniem jest najbardziej udaną grą z serii i szkoda że GTA V zboczyło z tego kursu
MaxGaming (19:33, 21.06.18):
fabuła, to jak ona wpływała na otoczenie(nie tak na siłę jak w SA) no i te dodatkowe funkcje były super. Na przykład każdego wieczoru zależnie od dnia tygodnia na stadionie można było wziąć udział w różnych zawodach. Kupowanie tych biznesów i zarabianie na nich. No i zdobywanie dzięki temu terenów. I ta fabuła była krótka ale dzięki temu genialna. Zdobywanie willi na przykład to jest coś fajnego. Ogólnie misji było mniej ale były ciekawsze i było mniej zapychaczy
MaxGaming (19:31, 21.06.18):
Ten klimat jest genialny. Do dziś często pykam w VC
MaxGaming (19:31, 21.06.18):
Mówiąc o VC to uargumentuje. Po pierwsze SA było za duże jakby. Mam na myśli że było niezorganizowane, dodano mnóstwo funkcji w ogóle nie związanych ze sobą. I tak trzeba było non stop dbać o siłkę itp żeby nie spadła forma. Ogólnie SA fabularnie jest zajebiste i kliamtycznie ale trochę twórcy za dużo nawtykali takich bezsensownych funkcji. GTA VC podobało mi się bo było bardziej kompletne. Wszystko do siebie pasowało. Brakowało paru funkcji żeby było jak na swoje cza
I am vader (19:30, 21.06.18):
A jesli ktos powie ze midzy gta V a IV jest za duzy okres czasu zeby je nazwac "w tym samym czasie" to moze miec racje, ale tego samego argumentu nie mozna uzyc do sa i vc bo wyszly z 2-letnia roznica
I am vader (19:10, 21.06.18):
bo gta V jest dziesiatki razy wieksze od SA, ale kazdy jest tworem swoich czasow i moim zdaniem w swoim czasie SA bylo milion razy lepsze od VC, a GTA V od GTA IV.
I am vader (19:10, 21.06.18):
GTA:SA natomaist to wooo, śmiem twierdzić że GTA:SA = GTA V > GTA 4 > GTA III=GTA VC
I am vader (19:09, 21.06.18):
Nie rozumiem fendomenu gta 4 i VC. VC chyba jedzie na samej nostalgi bo wiele w tej grze nie bylo, nawet fabula byla krotka.
MaxGaming (19:00, 21.06.18):
Według mnie najlepsze 3 części serii to kolejno GTA 4>GTA VC>GTA SA
Wojo (18:38, 21.06.18):
nieźle się typeczek postarał
Ankieta
» Jakie kursy najchętniej widziałbyś na stronie ?
GM Studio
GM Studio 2
Godot
Construct

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

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