Programování pro hračičky/Měniči/Lekce 2: Porovnání verzí

Smazaný obsah Přidaný obsah
Řádek 24:
Když se pokoušíme zacházet s různými objekty, narazíme na případy, kdy se s nějakým objektem nedá provést něco, co u jiných objektů téhož druhu bylo možné. Například jsme si na pár oknech vyzkoušeli, jak reagují na příkazy <code>otevři</code>, <code>zavři</code> a <code>zaklepej</code> — v jednom případě šlo třeba okno skutečně otevřít, ve druhém případě nám třeba sdělilo, že otevřít nejde, protože je zarezlé, ale bylo každopádně jasné, že příkaz je v objektu okna definován — ale pak najednou narazíme na okno, které na všechny zmíněné příkazy reaguje jen obecným <code>Prosím?</code>.
 
Takovéto dvojí chování oken (nebo jiných objektů, třeba dveří, židlí, skříní a pod.) bývá způsobeno tím, že objekt, který nereaguje na očekávané příkazy, není reálný, nýbrž tzv. ''virtuální objekt''.
 
Zatímco objekty, o nichž jsme dosud mluvili, jsou samostatné a ucelené programové entity, virtuální objekty jsou vlastně jen do jiných objektů vložené záznamy o vlastnostech objektů, které ''by mohly'' být, ale nikdo je nevytvořil. V případě našeho nereagujícího okna je tímto „jiným objektem“ místnost, která má mezi svými vlastnostmi uloženo, že je v ní staré okno v bíle natřeném dřevěném rámu, na omak trochu zaprášené. Pokud pak hráč zadá příkaz <code>prohlédni si okno</code>, pak jeho hráčský objekt, v němž je příkaz <code>prohlédni</code> definován, sice nenajde žádný reálný objekt, jehož by se tato věta mohla týkat, ale od místnosti dostane zprávu, že má popis zmíněného okna, a ten zní: <code>Staré okno v bíle natřeném rámu. Léty nepoužívání už zatuhlo ve své zavřené poloze natolik, že ani při nejlepší vůli nejde otevřít.</code> Hráčský objekt pak hráči pošle tento popis úplně stejně, jako by v místnosti byl samostatný objekt okna. Pokud však hráč zadá příkaz <code>zaklepej na okno</code>, pak obdrží jen hlášku <code>Prosím?</code>, protože ani hráčský objekt sám, ani místnost s virtuálním oknem nedefinuje příkaz <code>zaklepej</code>.
...
 
{{doplnit}}
Ne všechny objekty kolem vás, s nimiž můžete něco dělat, jsou pravé objekty, tedy objekty nahrané do paměti hry ze samostatného souboru v její adresářové struktuře. Mnoho objektů je tzv. virtuálních, tedy vytvořených jen podle určitého předpisu. Takovéto objekty mají obvykle menší množinu operací, jež s nimi lze provádět.
 
Příkladem virtuálního objektu (zkracováno na „vitem“) mohou být pohledové objekty, např. <code>stěny</code>. V rámci Domu je možné zadat <code>p stěny</code> a prohlédnout si tak podrobněji danou místnost.<ref>Krom <code>p stěny</code> si lze prohlédnout i jen jednu stěnu pomocí <code>p stěnu</code>. Protože se však s velkou pravděopodobností jedná jen o jiné jméno stejného objektu, bude výsledek shodný.</ref> Tyto stěny nemají vlastní soubor, jsou součástí popisu objektu dané místnosti, jedním z jeho pohledů, detailů. Je tak možné na stěny koukat, dotknout se jich či je očichat, nedají se ale vzít do inventáře ani přenést jinam. Stěny též nejsou jako virtuální objekt schopné nabízet postavám speciální místní příkazy.<ref> Ale nějaký takový místní příkaz, např. <code>kresli na stěny</code>, by mohl být nabízen v rámci objektu dané místnosti.</ref> Takovéto pohledové virtuální objekty umožňují hráči si lépe představit, jak jeho okolí vypadá, jsou „kořením“ MUDu.
 
Opakuje-li se nějaké skupina pohledů u vícera objektů — např. má-li část jeskynního systému umožňovat prohlédnutí <code>stěn</code>, <code>podlahy</code>, <code>stropu</code> a <code>krápníků</code> — vyčleňují se tyto do samostatného souboru, tzv. „vitem-masteru“. V jednotlivých objektech místností jeskyně pak stačí načíst tento soubor s pohledy. Načítáním z jednoho místa je mnohem jednodušší pohledy spravovat, ve všech místnostech se totiž zobrazí stejným způsobem.
 
{{doplnit|více informací k reálným objektům?}}