Jdeme na to s Urwigem - 9. Proměnné a práce s nimi
Jak se ovládají diagramy v Urwigu již víme, takže je můžeme začít naplňovat něčím smysluplným. Jako každý programovací jazyk, i wherigo dává programátorovi možnost definovat tzv. proměnné a dále s nimi pak pracovat. V dnešní části si o nich povíme podrobněji.
Proměnnou si můžeme představit jako šuplík, který má nějaký obsah. Při tvorbě programu pak můžeme určit, s jakým šuplíkem a co se má provést. Nepotřebujeme znát konkrétní obsah šuplíku, víme ale, co můžeme uvnitř očekávat.
Uveďme si příklad z běžného života, sice trochu přitažený za vlasy, ale budiž: V jistém podniku mají manažera, který má za úkol podepisovat a razítkovat důležité dokumenty. V této činnosti je dobrý, ale jinak je to velký hlupák. Jeho pracovní náplň je tedy úměrně jeho schopnostem definována takto: Otevři první šuplík, vezmi z něj papír a podepiš. Podepsaný papír pak vrať zpátky. Pak otevři druhý šuplík, vezmi z něj papír, orazítkuj ho a vlož do třetího šuplíku. Papíry ze čtvrtého šuplíku pak skartuj. Manažer přijde do práce a začne pracovat podle předchozího postupu. Otevře první šuplík, zde ležící papír podepíše a vrátí. Otevře druhý šuplík, papír z něj orazítkuje a dá jej do třetího šuplíku. Otevře čtvrtý šuplík a všechny papíry, které se tam nacházejí, vloží do skartovačky. Tím má pro tento den vystaráno a odchází domů s pocitem dobře vykonané práce. Vidíme, že se nijak nestará o to, jaké papíry v jednotlivých šuplících jsou. Důležité je, jestli se tam nějaký papír nachází nebo ne. K čemu jsou, je starostí toho, kdo ty papíry do šuplíků umístil. Pokud dojde k záměně papírů v jednotlivých šuplících, manažer to nepozná a provede to, co jindy. Následky takové záměny opět neřeší, ačkoliv mohou být klidně i dalekosáhlé.
Manažer popsaný v předchozím příkladu by se asi v reálném životě neuživil. Počítač však při vykonávání programu postupuje prakticky stejným způsobem (a navigace nebo telefon ve skutečnosti takovým počítačem jsou). Provádí to, co mu programátor pomocí kódu přikázal, a nepřemýšlí nad tím, co to způsobí.
Typ proměnné
Šuplíky v příkladu v programu nazveme proměnnými a papíry jsou pak jejich hodnotami. S papírem lze dělat určité věci: lze z něj číst, na něj psát, můžeme jej přehýbat, roztrhat, spálit apod. Jiné věci s ním však dělat nejde. Například s papírem asi těžko vyvrtáme otvor do železa. V šuplíku ale můžou být i jiné věci, např. nůžky, klíče, vrtačka apod. S každou věcí můžeme dělat něco jiného. Je tedy důležité, abychom věděli, co v šuplíku máme očekávat.
Obdobně je to s proměnnými. Podle toho, jaké hodnoty může proměnná obsahovat, určujeme její typ. Proměnné ve wherigu mohou být těchto typů:
- Textové, někdy používáme pojem řetězcové - obsahují volný text. V textových proměnných můžeme uchovávat např. odpověď hráče na nějakou otázku, zprávu, kterou budeme chtít hráči zobrazit apod.
- Číselné - obsahují číslo. V číselných proměnných můžeme uchovávat např. počet dosažených bodů, počet vstupů do zóny apod.
- Logické - obsahují jednu ze dvou logických hodnot: True nebo False, česky Pravda nebo Nepravda. V logických proměnných můžeme uchovávat např. informaci o tom, jestli hráč nějakou zónu navštívil či nenavštívil, jestli nějaký úkol splnil či nesplnil.
Víc typů nám wherigo nenabízí, ale myslím, že to nijak nevadí a že i s těmito si dokážeme vystačit.
Založení proměnné
Abychom v Urwigu mohli s proměnnou pracovat, musíme ji nejprve založit. To provedeme úplně stejně, jako založení jakéhokoliv jiného objektu. V seznamu Zobrazit > Proměnné klepneme na tlačítko Nová položka. V pravém panelu vlastností pak musíme vyplnit tyto údaje:
- Název - pod jakým názvem budeme k proměnné přistupovat. V našem příkladu s šuplíky jsme používali označení „první šuplík“, „druhý šuplík“ apod. U proměnných budeme k jejich identifikaci používat názvy. Název proměnné může stejně jako názvy jiných objektů v Urwigu obsahovat i diakritiku, proto je vhodné, abychom si proměnnou pojmenovali tak, abychom na první pohled poznali, k čemu slouží.
- Popis - i tak se někdy hodí podrobněji uvést význam proměnné do popisu.
- Hodnota - v této části určíme typ proměnné a zároveň její počáteční hodnotu:
- Pravda (True) - proměnná bude logická a bude na začátku obsahovat hodnotu Pravda.
- Nepravda (False) - proměnná bude logická a bude na začátku obsahovat hodnotu Nepravda.
- Řetězec (text) - proměnná bude textová a bude na začátku obsahovat hodnotu, kterou jsme vepsali do políčka pod volbou.
- Číslo - proměnná bude číselná a bude na začátku obsahovat číslo, které jsme vepsali do políčka pod volbou. Číslo je možné napsat buď ručně anebo vybrat myší pomocí malých tlačítek se šipkami napravo od políčka. Šipka nahoru zvyšuje číslo o 1, šipka dolů zase číslo o 1 snižuje.
Platnost proměnných
Takto založené proměnné jsou dostupné v celém projektu. Můžeme s nimi tedy pracovat v kterémkoliv diagramu, použít je v kterékoliv události. To může být na jednu stranu výhodné, na druhou stranu to může přinášet určité komplikace. Musíme si tedy této vlastnosti proměnných být vědomi a počítat s ní.
Diagramové akce pro práci s proměnnými
Urwigo pro práci s proměnnými nabízí tyto diagramové akce:
Nastav
Základní akce, která umožní nastavit konkrétní proměnné nějakou hodnotu. Když přetáhneme tuto akci do diagramu, zjistíme, že se skládá ze dvou částí: nalevo od znaku „=“ je tzv. levá část a napravo tzv. pravá část. V levé části musíme říct, jakou proměnnou chceme nastavit, v pravé části pak zase, jakou hodnotu chceme nastavit.
Levou část určíme tak, že si v levém spodním panelu objektů a vlastností najdeme kategorii Proměnné, kterou klepnutím na trojúhelníček rozbalíme. V nabídce vytvořených proměnných si vybereme tu, která nás zajímá, a myší pomocí drag&drop ji přetáhneme na akci a upustíme nad levou částí. Pokud jsme to udělali správně, zůstane nám název proměnné zobrazen v této části akce.
Zároveň zjistíme, že se nám upravila i pravá část. Objevila se v ní nějaká hodnota. Pokud jsme použili textovou proměnnou, objevil se prázdný text (v diagramu to poznáme pomocí dvou uvozovek ""), pokud jsme použili číselnou proměnnou, objevila se hodnota 0, a pokud jsme použili logickou proměnnou, objevila se hodnota Nepravda. Máme samozřejmě možnost tuto hodnotu změnit. Klepneme-li na ni v diagramu myší, můžeme v pravém panelu napsat něco jiného.
V akci Nastav se však nemusíme omezovat pouze na proměnné. Panel Objekty a vlastnosti obsahuje vše, co jsme doposud v projektu definovali - všechny zóny, předměty, postavy, úlohy, proměnné a další objekty. Každý objekt po svém rozbalení také nabízí všechny vlastnosti, které mohou být v diagramu použity.
Pokud chceme aktivovat nějakou zónu, předmět nebo postavu, jednoduše na levou stranu akce Nastav přetáhneme jeho vlastnost Aktivní a na pravé straně zaškrtneme hodnotu Pravda. Pokud je budeme chtít naopak deaktivovat, zrušíme na pravé straně zaškrtnutí volby Pravda a tím se v diagramu objeví hodnota Nepravda.
Tímto způsobem můžeme za běhu programu měnit třeba i názvy nebo popisy objektů, stačí do akce Nastav přetáhnout vlastnosti Název nebo Popis.
Úplně stejně můžeme měnit nastavení vlastností příkazů u předmětů nebo postav. Stačí se v panelu objektů a vlastností dostat až na příslušný příkaz a jeho vlastnosti (Povolen, Název, Prázdný text).
Ovšem pozor! Ne všechny vlastnosti lze použít na levé straně akce Nastav. Například některé objekty jako Hráč, Zóna, Věc, Postava mají vlastnost Počet v inventáři, která obsahuje aktuální počet položek v jeho inventáři. Tuto vlastnost můžeme použít pouze na pravé straně akce Nastav, nikoliv na levé. Můžeme napsat „Do proměnné Počet nastav hodnotu vlastnosti Počet v inventáři postavy Dědek“, ale už nemůžeme napsat „Do vlastnosti Počet v inventáři postavy Dědek nastav hodnotu 0“.
Jak takovou vlastnost poznáme? Nebojte se, Urwigo nás v tom nenechá. Jakmile na levou stranu akce Nastav umístíme vlastnost, která tam být nemůže, označí se akce jako chybná a dole v panelu chyb se zobrazí hlášení „Levý výraz je pouze pro čtení“.
Přičti / Odečti
Speciální případ nastavovací akce. Dost často budeme používat číselné proměnné jako čítač nějakých událostí (např. počet vstupů do konkrétní zóny, počet získaných bodů apod.). Pak budeme chtít na příslušných místech diagramu napsat „Hodnotu proměnné Vstup zvyš o 1“, nebo „Hodnotu proměnné Body zvyš o 10“, nebo taky „Hodnotu proměnné K dispozici sniž o 1“.
Jde to zapsat i s pomocí výše uvedené akce Nastav, ale akce Přičti / Odečti nám tuto práci výrazně usnadní. Po jejím přetažení do diagramu musíme určit proměnnou, jejíž hodnotu chceme upravit - přetáhneme ji z panelu objektů a vlastností. Automaticky je nám nabízeno zvýšení o 1. Pokud nám to nevyhovuje, můžeme v pravém panelu vlastností provést úpravu této hodnoty. Jednoduše sem napíšeme požadované číslo. Pokud bude kladné, dojde ke zvýšení hodnoty proměnné, pokud bude záporné, dojde k jejímu snížení.
Z logiky věci vyplývá, že v této akci můžeme použít pouze číselné proměnné. Pokud na ni přetáhneme proměnnou jiného typu, bude vypsána chyba „Výraz musí být číselný“.
Pokračování: Jdeme na to s Urwigem - 10. Práce s objekty