Spoločný život dvoch objektov Vytvorenie objektu Potrava
Začneme tým, čo už vieme, čiže vytvorením objektu.
Objekt FoodSpace (potrava) je
veľmi jednoduchý, pretože je pasívny, t.j. v priebehu života
sa nemení. Vytvoríme ho ako podtriedu už existujúcej triedy
definovanej v knižniciach Swarmu. Toto zapíšeme nasledovne:
@interface FoodSpace : Discrete2d
FoodSpace je podtriedou triedy Discrete2d , ktorá je vlastne mriežkou
celočíselných hodnôt a obsahuje metódy pre prácu s týmito
hodnotami. Nás zaujímajú dve metódy, ktoré použijeme v
našom programe:
getValueAtX: (int) x Y: (int) y;
- vráť hodnotu políčka na pozícii x,y.
putValue: (int) v atX: (int) x Y:
(int) y; - daj hodnotu v na pozíciu x,y.
Výskyt potravy zadefinujeme na základe pravdepodobnosti
výskytu konštantou seedprob . Tam
kde je potrava, hodnota políčka je 1. Model objektu je zapísaný
prostredníctvom súborov FoodSpace.h a FoodSpace.m
Máme zadefinovaný objekt FoodSpace a teraz ho pripojíme na chrobáka.
Komunikácia dvoch objektov
Komunikácia v našom prípade znamená, že chrobák hľadá
potravu, ak ju nájde tak ju zje (hodnota políčka sa zmení na
0).
Začneme teda doplnením súboru main.m.
Dáme smerník na náš objekt a zadefinujeme pravdepodobnosť
výskytu:
id FoodSpace;
float seedProob 0.2;
Teraz zadefinujeme samotné objekty FoodSpace
a keďže tie budú komunikovať s aBug
zadefinujeme znovu aj ten.
FoodSpace
aBug
Ďalej doplníme súbory Bug.h a Bug.m.
Dáme Bug u smerník na FoodSpace a doplníme metódy. Rozbijeme fázu vytvárania na dve časti: createBegin
a createEnd . Urobíme to, pretože
máme premenné, ktoré sa počas života programu nemenia. Ak
teda použijeme metódu createEnd
všetko čo je napísané nad ňou sa nebude môcť meniť počas
života chrobáka. To čo je napísané za touto metódou môže
meniť svoj vnútorný stav.
Do súboru Bug.h doplníme okrem
smerníka na FoodSpace ešte aj
metódy:
-setFoodSpace: (id) f;
-createEnd;
V súbore Bug.m nastalo viacero
zmien preto ho ponúkame celý: Bug.m
|