V tomto článku vám představím základy proměnných v Game Makeru. Ukážeme si, jak proměnné vytvářet, jak do nich zapisovat, vykreslovat je, globální proměnné i pole (array). Jak v GML, tak i v jiných programovacích jazycích jsou proměnné velmi důležité.
Co jsou to proměnné?
Proměnná je libovolný definovaný prostor, do kterého se postupně podle potřeby ukládají informace. Do proměnných se zapisují informace pomocí:
- hodnot/čísel - real
- řetězce/textu - string
- konstanty - True nebo False (zastupují čísla 1, 0 a používají se ke zjištění, jestli děj probíhá: true, nebo neprobíhá: false)
Pozor!
Názvy proměnných v sobě nesmí mít znaky s diakritikou a nesmí být delší než 64 znaků. Dále není dobré, když má proměnná stejný název s objektem, spritem nebo funkcí, jelikož by se při zadávání příkazů mohly názvy rušit.
Proměnné platí jen pro jeden objekt, a to ten, ve kterém jsou definované. Existuje však i globální proměnná, která platí pro všechny objekty.
Definice proměnné
Proměnná se definuje snadno:
nazev_promenne = hodnota_promenne; // proměnná real (číselná hodnota)
nazev_promenne2 = "text_promenne"; // proměnná string (textová hodnota)
nazev_promenne3 = true; // logická proměnná (true, tedy hodnota 1, což nám kontroluje, že děj probíhá, v opačném případě false, tedy hodnota 0)
Změna hodnoty proměnných
Je spousta způsobů, jak hodnoty proměnných změnit. Dá se "ráz na ráz" změnit, odečíst, přičíst, vynásobit...
Definujte si proměnnou, s kterou teď budeme pracovat (pojmenujeme ji promenna). Zatím si ukážeme, jak měnit číselnou hodnotu:
promenna = 10;
Teď vám ukáži pár čistě matematických způsobů, jak jí změnit hodnotu:
promenna = 20; // přímé změnění hodnoty z 10 na 20
promenna += 5; // přičtení čísla 5 k hodnotě 10 (výsledek 15)
promenna -= 5; // to samé, akorát se odečte (výsledek 5)
promenna *= 5; // vynásobí proměnnou číslem 5 (výsledek 25)
promenna /= 2; // vydělí proměnnou číslem 2 (výsledek 5)
Pokud si vytvoříme další proměnnou, můžeme ji od první třeba odečíst:
promenna -= druha_promenna + druha_promenna * 2;
Na změnu proměnných se dají samozřejmě použít i složitější matematické operace:
promenna = 5 + (promenna + (3 * druha_promenna)) / (5 + treti_promenna);
V proměnné String je to o něco kratší. Tam se dá použít jen sčítání řetězců do sebe nebo přímé měnění hodnoty. Ukážeme si to na tomto jednoduchém příkladu. Definujeme si proměnnou:
promenna_text = "krasny";
A teď si ukážeme, jak k ní přičíst jiný string:
promenna_text += " den"; // výsledkem bude krasny den (musíte napsat " den" a ne "den", jinak byste mezi slovy neměli mezeru)
Nebo také můžeme změnit celou hodnotu:
promenna_text = "zmena";
Jak jsem psal výše, proměnná platí jen pro objekt, ve kterém je definovaná. Jestliže ale chcete upravovat proměnnou v jiném objektu, než kde je definovaná, můžete to provést takto:
hrac.promenna = 10; // teď jsme změnili hodnotu v objektu hrac na 10
Další možností jsou globální proměnné, které platí pro všechny objekty ve hře. Vytvoříme si ji takto:
global.nazevpromenne = 6; // vytvořili jsme si globální proměnnou s hodnotou 6
Tuto proměnnou můžeme upravovat v jakémkoliv objektu tímto způsobem:
global.nazevpromenne = 4 // dále ostatními způsoby jako u ostatních proměnných
Vykreslování proměnných
Proměnné se dají samozřejmě vykreslovat do Roomu, toho se využívá například při životech nebo score...
Opět jako u zápisu je i vykreslování číselných a textových proměnných trochu odlišné. Nejdříve si vykreslíme číselnou proměnnou (budeme pracovat s proměnnými, které jsme si už vytvořili - promenna a promenna_text)
draw_text(x,y,string(promenna)); // vykreslí nám hodnotu číselné proměnné; string konvertuje číslice na text (řetězec), jelikož draw_text umí ukazovat jen řetězce
Text vykreslíme takto:
draw_text(x,y,promenna_text); // jednoduchý příkaz, který nám přímo vypíše hodnotu proměnné (text)
Array (pole)
Pole jsou proměnné pro složitější příkazy. Je to prakticky jedna proměnná s více hodnotami a vypadá takto:
promenna[0] = "Hra"
promenna[1] = "Film"
promenna[2] = "Program"
A jak vybereme z těchto hodnot jednu? Jednoduše. Zkusíme si ji třeba vykreslit:
draw_text(x,y,promenna[2]); // vykreslí se nám promenna[2]
Další způsob je zkombinovat to s další proměnnou. Definujeme si proměnnou:
test = 1
A pomocí ní vykreslíme proměnnou, kterou chceme:
draw_text(x,y,promenna[test]); // vykreslí se nám promenna[1], jelikož test má hodnotu 1, což nám nahradí číslo v závorce
Pokud potřebujete ještě složitější proměnné, existují ještě dvourozměrná pole:
promenna[0,0] = "Nula"
promenna[0,1] = "Jedna"
promenna[0,2] = "Dva"
promenna[1,0] = "Pes"
promenna[1,1] = "Kocka"
promenna[1,2] = "Krecek"
Na závěr si ukážeme, jak vybrat náhodný Array:
nahodna_promenna = promenna[choose(0,1,2)];
A vypíšeme ji takto:
draw_text(x,y,nahodna_promenna);
To je pro tento článek vše.