Az Ön feladata egy paraméterezett sziget modelljének programozása, amely helytömbből áll (például egy 100x20-as mátrix). A helyszíneket növényekkel és állatokkal fogják benépesíteni. Az állatok képesek:

  • növényeket és/vagy más állatokat enni (ha helyükön megfelelő táplálék van),
  • költözni (szomszédos helyekre),
  • fajta (ha kétféle létezik egy helyen),
  • éhen halnak vagy megeszik.

OOP

Az állatsereg létrehozása során a lehető legtöbbet használja az OOP-ot: minden faj egyetlen absztrakt állatosztályból származik, amely tartalmazza azt a viselkedést, amely minden állatra jellemző. Ha bizonyos állatok sajátos jellemzőkkel rendelkeznek a táplálkozás, a szaporodás, a mozgás stb. tekintetében, akkor felül kell írniuk az Állatok osztály módszereit.

A következőket kell tennie:

1. Hozzon létre egy osztályhierarchiát:

  • Ragadozók : Farkas , Boa , Róka , Medve , Sas

  • Növényevők : , szarvas , nyúl , egér , kecske , juh , vaddisznó , bivaly , kacsa , hernyó

  • Növények

Az alábbi táblázat azt mutatja, hogy egy állat mekkora valószínűséggel eszik "eledelt", ha ugyanazon a helyen van, mint az "eledel". Nézzük meg azt a helyzetet, amikor „a farkas megeszi a nyulat”. A táblázatban szereplő szám 60. Ez azt jelenti, hogy ha a farkas és a nyúl ugyanazon a helyen vannak, 60% az esély arra, hogy a farkas megeszi a nyulat. Többszálú véletlenszám-generátort kell használnia .

Farkas Boa Róka Medve Sas Szarvas Nyúl Egér Kecske Juh Vaddisznó Bivaly Kacsa hernyó Növények
Farkas - 0 0 0 0 10 15 60 80 60 70 15 10 40 0 0
Boa 0 - 15 0 0 0 0 20 40 0 0 0 0 10 0 0
Róka 0 0 - 0 0 0 0 70 90 0 0 0 0 60 40 0
Medve 0 80 0 - 0 40 80 80 90 70 70 50 20 10 0 0
Sas 0 0 10 0 - 0 0 90 90 0 0 0 0 80 0 0
0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 100
Szarvas 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 100
Nyúl 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 100
Egér 0 0 0 0 0 0 0 0 - 0 0 0 0 0 90 100
Kecske 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 100
Juh 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 100
Vaddisznó 0 0 0 0 0 0 0 0 50 0 0 - 0 0 90 100
Bivaly 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 100
Kacsa 0 0 0 0 0 0 0 0 0 0 0 0 0 - 90 100
hernyó 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 100

Az állatok jellemzői:

Súly állatonként, kg A fajhoz tartozó állatok maximális száma helyenként Maximális sebesség (helyek száma) fordulónként Az állat teljes táplálásához szükséges élelmiszer kilogrammjainak száma
Farkas 50 30 3 8
Boa 15 30 1 3
Róka 8 30 2 2
Medve 500 5 2 80
Sas 6 20 3 1
400 20 4 60
Szarvas 300 20 4 50
Nyúl 2 150 2 0,45
Egér 0,05 500 1 0,01
Kecske 60 140 3 10
Juh 70 140 3 15
Vaddisznó 400 50 2 50
Bivaly 700 10 3 100
Kacsa 1 200 4 0,15
hernyó 0,01 1000 0 0
Növények 1 200 N/A N/A

2. Az állatnak rendelkeznie kell étkezési , szaporodási és mozgási irányválasztási módszerekkel .

3. Növényevő és húsevő osztályon megvalósíthatja az evés módszerét. De légy óvatos, a növényevő kacsa hernyókat eszik .

4. Az egyes fajokat képviselő osztályokban az összes módszert módosíthatja az állat tulajdonságainak megfelelően.

5. Legalább 10 növényevő fajt és 5 húsevő fajt kell létrehoznia (az 1. pontban leírtak szerint).

Többszálú

Természetesen lehetséges, hogy a teljes programot egy szálra írjuk, csak ciklusok segítségével. De gyakorlatra van szükségünk a többszálú kezelésben, ezért szálakat és szálkészleteket kell használnia. Egy ütemezett készlet a növények növekedéséhez és az állatokkal kapcsolatos műveletekhez kapcsolódó ismétlődő feladatok futtatásához, valamint egy feladat a rendszerstatisztikák megjelenítéséhez. Alternatív megoldásként megjelenítheti a statisztikákat egy feladatban a növényekkel vagy állatokkal. Az állatakciós feladaton belül egy másik szálkészletet is használhat – egy közönségest. Ön dönti el, hogy mely feladatokat kívánja hozzárendelni ehhez a készlethez.

A feladat kötelező részei:

  • Állati hierarchia (OOP)
  • Állati viselkedés
  • Többszálú
  • Statisztikák a sziget állapotáról minden iterációnál (megjelenik a konzolon)

A feladat választható részei:

  • Jelenítse meg a paramétereket egy helyen, hogy könnyen kezelhető legyen a szimuláció
  • Konzolstatisztika helyett grafika. Használhat pszeudográfiát a konzolban, vagy JavaFX, Swing...
  • Adjon hozzá további tényezőket, amelyek befolyásolhatják a szimulációt:
    • több fajta állat
    • különböző típusú növények
    • egyéni viselkedés egy állatcsoport számára (például farkas vadászik és falkaként mozog, nem pedig külön)
    • földi terep, beleértve a folyót, amely akadályozza bizonyos állatok mozgását

A beállításokról (ha úgy dönt, hogy hozzáadja őket)

A program indításakor a különböző beállítások kényelmes megváltoztatása érdekében (a sziget mérete, a növények/állatok maximálisan megengedett száma egy helyen, egy adott típusú állat elköltözésének valószínűsége, az utódok száma a különböző fajokban stb. .), ezeket a beállításokat el kell helyeznie valahova, például egy külön osztályba. Lehetővé kell tenni a következő beállítások módosítását:

  • sziget mérete
  • egy óraciklus időtartama a szimulációban
  • az egyes fajok állatainak száma a szimuláció kezdetén
  • a szimuláció leállításának feltétele (pl. az összes állat elpusztult)
  • az utódok száma az egyes állatfajták esetében

Unicode (ha úgy dönt, hogy pszeudográfiát készít)

Az állatok ábrázolására Unicode karaktereket használhat: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦁, 🐇, 🦅, 🐇.