Proměnné - Co je to?

Ostatní jazyky GameMaker Základy Proměnné - Co je to?

Proměnná je jednoduše řečeno kousek paměti, kam si můžeme uložit nějaká data. Může ukládat např. život hráče, počet jeho nábodů a podobně. Proměnná vždy patří konkrétnímu objektu.

Pokud máme uloženou tuto informaci, můžeme s ní dále pracovat. Např. při zasažení příšery odečteme z proměnné zivot 20. Dále otestujeme, zda je proměnná ještě kladná. Pokud ne, příšeru zničíme.

GameMaker obsahuje 3 základní předpřipravené proměnné: lives (životy), health (zdraví) a score (skóre). Kromě těch si však můžeme tvořit vlastní proměnné, jako např. zmíněné naboje a podobně.

Proměnnou založíme tím, že ji deklarujeme. V Game Makeru se to dělá jednoduše tak, že do ni uložíme nějakou počáteční hodnotu. Pokud se budeme snažit přistoupit k proměnné, která neexistuje, vyvolá to chybu. Např. proměnnou zivoty u příšery vytvoříme tak, že v události Create u objektu příšera nastavíme proměnnou zivoty na 100. Hned si ukážeme, jak se hodnota do proměnné nastavuje a jak se čte.

Ještě je dobré vědět, že v GameMakeru mají proměnné 2 typy: číslo a text. V programování se typům proměnných říká datové typy. Hodnotu textových proměnných píšeme do uvozovek.

Práce s proměnnými v GameMakeru

Proměnné pomocí ikonek

  • pro nastavení proměnné slouží akce Set variable z Controls
  • zde zadáte pouze název nebo název s prefixem názvu objektu (prefixem se myslí např. hrac.naboje, pokud chceme nastavit náboje objektu hráč mimo tento objekt).

Aplies to: určuje kterému objektu se bude proměnná nastavovat
variable: název promenné
value: její hodnota
relative: pokud zaškrtnete pak se hodnota přičte k současné hodnotě proměnné


Dočasné proměnné

// deklarace dočasných proměnných
// tyto proměnné jsou určené pro dočasné uložení nějaké hodnoty a nejsou přístupné v dalších částech kódu, označujeme je slůvkem var
var temporary_1, temporary_2;
temporary_1 = "dočasná proměnná";

//proto když například v eventu <on press SPACE> zavoláme fci show_message s parametrem temporary_1 dostaneme chybové hlášení o neexistující proměnné
show_message(temporary_1);

Lokální promenné

// inicializace lokální proměnné
local_variable = "lokální proměnná";

//tuto proměnnou můžeme používat kdekoliv v objektu
show_message(local_variable);

//jiný objekt
//zároveň je možné k lokální proměnné přistupovat s jiného objektu
show_message(object0.local_variable);

Globální proměnné

Globální proměnné jsou špatné a neměly by se používat. Pokud jste je někde viděli, bylo to špatně. Pokud vám je někdo radí, neposlouchejte ho. Dělá to mnoho lidí a je to špatně. Proč? Protože proměnná někomu patří. Když budeme ukládat počet nábojů hráče, proměnná naboje bude patřit objektu hráč. Neexistuje žádný důvod, proč ji dělat globální, naopak to přináší problémy s přepisováním a porušuje to zapouzdření a další principy objektového programování.


 

Stáhnout

Staženo 262x (10.19 kB)
Aplikace je včetně zdrojových kódů v jazyce GameMaker

 

  Aktivity (1)

Článek pro vás napsal David Jančík [sczdavos]
Avatar
Autor je vášnivý programátor v .NET C# a PHP. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.

Jak se ti líbí článek?
Celkem (3 hlasů) :
55555


 



 

 

Komentáře
Zobrazit starší komentáře (1)

Avatar
matesax
Redaktor
Avatar
matesax:

Pardon - sekce GM. No to se ptáš docela nešikovně - záleží na tom, jak si to uděláš. Tedy jaký objekt bude jiný hráč. Pak tedy ovládáš tento objekt.

Editováno 9.9.2012 12:55
 
Odpovědět 9.9.2012 12:52
Avatar
TomBen
Redaktor
Avatar
TomBen:

Zpravidla podmínkou ověříš, který hráč hraje a podle toho použiješ proměnnou.
Ideální je pole, pak nemusíš ani tu podmínku.

Třeba: zivoty[hrac]=10; //hrac zde musí být číslo ( 0,1,2,3.. )

Ale jde to dělat různě. 8-)

Editováno 9.9.2012 13:42
Odpovědět 9.9.2012 13:41
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
radekj122
Člen
Avatar
radekj122:

Hm... Díky :D Se v tom vyznám :D

 
Odpovědět 9.9.2012 14:11
Avatar
matesax
Redaktor
Avatar
Odpovídá na radekj122
matesax:

Vždy když dojde k výměně, nastavíš proměnnou na příslušnou hodnotu. Například pomocí proměnné "naRade". Určíš si, že hodnota 0 bude pro hráče 1, hodnota 1 pro hráče 2,... Pak jak jsem napsal - když dojde na výměnu, nastavíš příslušné číslo. A všude, kde budeš něco dělat - něco specifikckého pro daného hráče - třeba přičítat skóre, tak to budeš muset rozdělit podle proměnné "naRade"...

 
Odpovědět  +1 9.9.2012 17:13
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Tak teď už tomu nerozumím ani já.

Odpovědět  +1 9.9.2012 17:25
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
radekj122
Člen
Avatar
Odpovídá na matesax
radekj122:

Hmm... Ok, já dělám jazyk "Pawn" na Grand Theft Auto San Andreas, tak z toho něco chápu :D tzn. Díky :)

 
Odpovědět 9.9.2012 17:33
Avatar
matesax
Redaktor
Avatar
Odpovídá na radekj122
matesax:

No záleží na tom, jak to chceš udělat. Pokud na kola, tak to bude to střídání, ale pokud současně, tak jak jsem psal hoře - záleží na tom, jaké uděláš objekty. Tedy tam je zbytečně pomáhat si proměnnými. Každý hráč bude objekt (Ani by to snad nešlo jinak.) a jakožto objektu mu můžeš dávat příkazy... Stejně tak při střídací hře to můžeš udělat pomocí objektů. Tedy objekt hráč1 a objekt hráč2. Při střídání pak nastavíš, který z nich bude aktivní. Šlo by to udělat několika způsoby - například přidáváním a odstraňováním z místnosti. Ale to by bylo asi zbytečné...

Editováno 9.9.2012 17:45
 
Odpovědět 9.9.2012 17:43
Avatar
radekj122
Člen
Avatar
radekj122:

Díky :) Už to asi chápu :D

PS: Máš Skype ? :)

Editováno 9.9.2012 17:59
 
Odpovědět 9.9.2012 17:58
Avatar
matesax
Redaktor
Avatar
 
Odpovědět 9.9.2012 18:34
Avatar
jikolp7
Člen
Avatar
jikolp7:

h4x0r

 
Odpovědět 27.4.2015 15:53
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 11. Zobrazit vše