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

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
Chell (1:16, 26.06.17):
conieco
ANtY (1:03, 26.06.17):
elo co tam
I am Lord (19:53, 25.06.17):
Za dużo tam różnych optymalizacyjnych działań na bitach i flagach bitowych
I am Lord (19:50, 25.06.17):
Ogółem prawie nic nie rozumiem z tego kodu źródłowego, analiza gry AAA to nie mój poziom :p
I am Lord (19:49, 25.06.17):
Udało mi się skompilować i odpalić kod źródłowy ArxLibertatis (portu gry ArxFatalis) ile z tym roboty było ja pierdziele, nigdy więcej
I am vader (4:04, 25.06.17):
Nie ma to jak usuwanie botów o 4'tej
I am vader (20:22, 24.06.17):
Threef za biały jest na allahuackbar
Ignatus (19:59, 24.06.17):
Threef zapuść wąsa do tej brody bo jest teraz za bardzo allahuakbar
I am Lord (18:01, 24.06.17):
ok mam chwilkę> to wbiję
Threef (17:26, 24.06.17):
Właśnie zaczynam streamować. www.twitch.tv/threef_games
I am Lord (17:02, 24.06.17):
Zbanowałem bota zanim zrobił temat to jest skill a nie jakieś programowanie
I am Lord (15:07, 24.06.17):
Chyba sobie do niego powrócę ale pamiętam że ciężko mi było się w tym połapać wszystkim, niby tego Newton Ponga zrobiłem ale połowę gry odwalił za mnie silnik fizyczny więc za wiele się nie nauczyłem
ANtY (13:21, 24.06.17):
na szczescie, bo to co w unity było to nawet nie był prawdziwy JS
Danieo (11:44, 24.06.17):
C# jest wiodącym językiem w Unity. Tak jak Boo już wymarło to powoli wymiera JS
Adriann (22:49, 23.06.17):
Łoo, pszekonał :3
Nikas (22:03, 23.06.17):
chuj kurwa gem makr zarabiaj dorary
PatrykPlayingPOLSKA (21:33, 23.06.17):
Są wakacje więc postanawiam nie zmarnować tego czasu.
I am vader (20:55, 23.06.17):
C#
I am Lord (19:40, 23.06.17):
C#
PatrykPlayingPOLSKA (19:09, 23.06.17):
Właśnie,może ktoś powiedzieć w czym zacząć pisać w Unity czy w C# czy javascript.W czym lepiej ?
ANtY (17:42, 23.06.17):
w GMie możesz programować bardzo mieszaną składnią, także zależy jak to robisz, w Unity korzystasz z C# (wcześniej dużo ludzi jeszcze z JS korzystało ale unity juz go nie supportuje na rowni z c#)
I am vader (16:54, 23.06.17):
Anty
nowy_user (12:59, 23.06.17):
Rozumiem, a czy jest na forum ktoś kto się "przebranżowił" z GMa na Unity? Sam o tym myślę, ale wiecie, to jest całkiem inny język programowania i domyślam się że wymaga to ogromu pracy...
Wojo (10:35, 23.06.17):
O tym juz pisalem ze możliwości GMa są stanowczo zbyt małe jak na dzisiejsze czasy. GM nie nadazyl za skokiem technologicznyn
nowy_user (8:53, 23.06.17):
Rzeczywiście cena lekko przesadzona. Ja oczywiście rozumiem, że ostatnio powstało sporo komercyjnych gier na GMa i domyślam się też, że włodarze Yoyo aspirują do tego, aby GM był używany przez studia developerskie, i to wszystko fajnie. Ale bądźmy szczerzy, jeśli porównamy możliwości GMa do Unity to jednak nasz kochany program jeszcze musi sporo nadgonić, więc te wysokie ceny - na ten moment- są od czapy.
Danieo (8:17, 23.06.17):
W Unity też. Jedynie musisz być zarejestrowanym developerem Sony (mieć dostęp do Devkita PS4)
Wojo (7:45, 23.06.17):
W Unreal Engine za to nie doplacasz nic. Jedynie jakiś tam procent z zysku ale myślę że to i tak jest uczciwe biorąc pod uwagę możliwości
Ignatus (23:22, 22.06.17):
3000zł z roczną możliwość eksportu na PS4 solidna cena
Uzjel (21:27, 22.06.17):
Master chyba
I am vader (21:03, 22.06.17):
Errr...czym jest Ultimate?
Threef (19:32, 22.06.17):
gnysek na Ultimate, na X1 i PS4. 3 Moduły są teraz na subskrypcję
gnysek (19:16, 22.06.17):
Subskrypcja jest tylko na Ultimate, na resztę nie.
I am Lord (19:01, 22.06.17):
Vader no tutaj na głównej: i.imgur.com/SPrqXPK.png
Threef (17:42, 22.06.17):
Na razie to info że exporty na X1 i PS4 są ważne na 12 miesięcy
I am Lord (17:41, 22.06.17):
Teraz żałuję że kupiłem go :/
I am Lord (17:40, 22.06.17):
Najpierw baitują że nie będzie subskrypcji a teraz ją wprowadzają
Adriann (17:36, 22.06.17):
Cooooooooooooo?!
Threef (17:25, 22.06.17):
Przepraszam co...? GM:S2 ma mieć teraz moduły subskrypcyjnie? Na 12 miesięcy? lol
I am vader (13:39, 22.06.17):
Nie wiem jak dotrzeć do tego działu nawet
I am Lord (11:45, 22.06.17):
im vader moj jest w assorted top down
PatrykPlayingPOLSKA (10:00, 22.06.17):
Mi się wydaje że większość gości to boty ale może być też paru ludzi,trzeba jakoś zachęcić ludzi do zarejestrowania na tym forum,np można jakoś polepszyć tą polską dokumentajcę,coś do niej dodać,na steamworkshop gamemaker można jakoś popisać że jest takie ciekawe coś jak GMC,no sposobów może być wiele.
nowy_user (9:30, 22.06.17):
Chell , aktywnych userów może i dziesięciu, ale np. w tej chwili jest 133 gości! Unbelievable! Swoją drogą , ciekaw jestem dlaczego ludzie się tak ukrywają, zamiast po ludzku się zarejestrować.
Chell (22:56, 21.06.17):
niestety sprzedawanie assetow po zlotowke na ktore zbija sie po 5 osob jest malo oplacalne na forum na ktorym jest 10 aktywnych userow
nowy_user (22:52, 21.06.17):
A może powinniśmy stworzyć własny markietplace tu na gmclanie? Ja widzę same plusy: Po pierwsze - > ceny byłyby w złotówkach, więc więcej ludzi mogłoby sobie na nie pozwolić, Po drugie -> Nie wiem jak wy, ale ja wolałbym wspierać finansowo programistę od nas , ktoś kogo znam z forumowej aktywności zamiast jakiegoś anonimowego geeka z Californi lub Colorado. I po trzecie -> Zmotywowało by to nas wszystkich do twórczości.
I am vader (22:48, 21.06.17):
A który asset jest twój? Przegrzebałem showcase i top rated i nic podpisanego HuderLord nie znalazlem
I am Lord (19:06, 21.06.17):
Aha no super, nic się na głównej nic nie zmieniło pół toku już mój asset tam jest, yoygames zapomniało że ma ten MP że go nie moderują?
I am Lord (19:04, 21.06.17):
Dawno nie zaglądałem tam
nowy_user (12:47, 21.06.17):
Przepraszam , miało być Uzjel.
nowy_user (12:47, 21.06.17):
Ujzel: Właściwie jest cała masa świetnych assetów, wczoraj odkryłem marketplace i jestem pod wrażeniem co można zrobić w GMie, od razu chciałbym kupić wszystkie A tak całkiem serio to ten asset jest obłędny: marketplace.yoy...845/text-inputs Jest demo do ściągnięcia, no po prostu miodzio, bez porównania do darmowych , zbugowanych assetów
Ankieta
» Jakiej wersji GameMakera głównie Używasz?
GameMaker: Studio 2
GameMaker: Studio
GameMaker 8.1 i starsze
Żadnej

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.02179 sekund ] [ Liczba zapytań MySQL: 16 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev