Személyes eszközök
Keresés

 

A InfoWiki wikiből


Tér, Kutyák, Macskák

Készítsük el az alábbi szimulációt: egy teljes sötétségbe borult téren kutyák és macskák mászkálnak. A macskák jobban látnak a sötétben, a kutyák igyekeznek a macskák mozgását gátolni. Ha egy kutya egy macska közelébe ér, akkor a tappancsát a macska hátára teszi, és blokkolja a mozgását. Egy kutya egy időben csak egy macska mozgását blokkolhatja. A terület NxN-es méretű egységekre osztható:

'Állat' osztály:

  • 'név': minden állatnak (kutya, macska) egyedi neve van (nem megváltoztatható)
  • 'x','y': tárolja a saját koordinátáit a terület belsejében (nem lehet az NxN-es területen kívül)
  • 'konstruktor': a kezdőértékek beállításához
  • 'property'-k: a mezőkhöz ahol szükséges

'Macska': az 'Állat' továbbfejlesztése, képes a mozgásra amíg nem blokkolják. Igyekszik elkerülni a kutyákat.

  • 'blokkolt': logikai, csak olvasható property, megadja, hogy a macskát blokkolja-e már egy kutya
  • 'lepes()': a macska próbál egy másik mezőre mozogni, olyan mezőre léphet csak, amely üres, és lehetőleg távolabb kerüljön a kutyáktól. Csak szomszédos mezőre tud lépni. Ha nem tud ilyet lépni, akkor inkább helyben marad. Képes körben 3 mezőnyi távolságra "ellátni", hogy eldönthesse melyik irányba érdemes lépni.

'Kutya': az 'Állat' továbbfejlesztése, próbál keresni egy blokkolható macskát

  • 'blokkol': logikai, csak olvasható prperty, megadja, hogy ezen kutya blokkol-e már egy macskát
  • 'lepes()': véletlen irányba lép el az adott mezőről, max egy lépésnyi távolságra. Ha a lépés után valamely szomszédos mezőn blokkolható macska van, akkor azt blokkolja. A továbbiakban ő már nem mozdul el erről a mezőről.

'Tér': mérete adott, nyilvántartja a rajta kószáló állatokat, vezérli azok működését.

  • 'konstruktor(int N)' létrehoz egy NxN-es területet, üresen
  • 'hozzaad(Állat n, int x, int y)' elhelyez az adott mezőn egy állatot (ha a mező üres)
  • 'vezerles()': sorban meghívja az összes állat 'lepes()' metódusát, hogy az mozoghasson. Az állatokat az egyenlő esélyek jegyében véletlenszerű sorrendben aktivizálja. Amennyiben minden egyes állatot már aktivizált. Logikai IGAZ értéket ad vissza, ha minden kutya blokkol már macskát, vagy minden macska blokkolva van (egyébként HAMIS értéket).
  • 'kirajzol()': kirajzolja a képernyőre a terület rajzát. Az üres mezőket '.' jelöli, a kutyákat 'K', a macskákat 'M' betű. A szabadon kószáló állatok mindíg zöld színűek, a blokkoltak kékek.

Készítsünk olyan főprogramot, amely példányosít egy 20x20-as területet, majd véletlenszerű helyekre macskákat és kutyákat helyez el. A macskák és kutyák neveit text file-ból olvassa be. Majd kirajzoltatja a területtel saját magát, aktivizálja a terület vezérlését. Ezt ismételgeti, amíg a terület vezérlés azt nem jelzi, hogy nincs értelme tovább működtetni azt.

A lap eredeti címe: „http://wiki.ektf.hu/wiki/Mp4/page12
Nézetek
nincs sb_3.138.122.195 cikk