Programování pro hračičky/Andělé/Lekce 3: Porovnání verzí

Jakmile jsme zvládli udělat prvních pár virtuálních detailů, můžeme se se získanými zkušenostmi vrhnout do klonování skutečných programátorských objektů. I ty budeme vkládat do místností (což je, podobně jako u virtuálních detailů, zdaleka nejčastější způsob jejich použití).
 
Nejprve si ve složce <code>/obj</code> a v jejích podsložkách vybereme, který z již předpřipravených objektů chceme použít (pro následující příklad předpokládejme, že se rozhodneme pro batoh). Pak si ze svých místností zvolíme tu, do které má být objekt umístěn. S touto místností pak bude dotyčný objekt spjat jako s objektem, který jej vytvořil a do kterého byl počátečně umístěn.
 
V programu místnosti nyní provedeme několik úprav. Především někde v úvodu souboru (ale až za různá <code>inherit</code> a <code>#include</code>) deklarujeme proměnnou typu objekt, která bude odkazovat na vytvářený objekt. Tuto proměnnou bychom mohli nazvat klidně <code>Franta</code> nebo <code>x3356762</code>, ale je dobrým zvykem nazývat věci tak, aby byly podle názvu rozpoznatelné, tedy ji nazvěme třeba <code>batoh</code>:
...
 
<source lang="c" >
object batoh;
</source>
 
Od této řádky dále pak můžeme v programu místnosti používat proměnnou <code>batoh</code> a ukládat do ní odkazy na objekty.
 
Jako další úpravu vložíme do programu místnosti novou funkci <code>reset()</code>. Funkce tohoto jména se u objektů, které se právě nacházejí ve hře, volá automaticky přibližně jednou za 40 minut, a slouží k tomu, aby se tyto objekty mohly vždy znovu uvést do nějakého kýženého základního stavu. Základním stavem naší místnosti ovšem bude, aby obsahovala batoh, a proto, pokud objekt <code>batoh</code> neexistuje nebo už není v místnosti přítomen, naklonujeme nový batoh z <code>/obj/batoh.c</code> a přemístíme ho do této místnosti:
 
<source lang="c" >
}
</source>
 
Tato funkce <code>reset()</code> se musí nacházet ''za'' deklarací proměnné <code>batoh</code> (protože v ní tuto proměnnou používáme) a ''před'' funkcí <code>create()</code>.
 
...
20 015

editací