Din opgave er at programmere en model af en parametriseret ø bestående af et array af lokationer (for eksempel en 100x20 matrix). Stederne vil være befolket med planter og dyr. Dyr kan:

  • spise planter og/eller andre dyr (hvis deres placering har passende føde),
  • flytte (til nærliggende steder),
  • race (hvis to af slagsen findes på et sted),
  • dø af sult eller blive spist.

OOP

Når du opretter din vært af dyr, bør du bruge OOP så meget som muligt: ​​alle arter kommer fra én abstrakt dyreklasse, som vil indeholde den adfærd, der er fælles for alle dyr. Hvis specifikke dyr har specifikke egenskaber med hensyn til deres fodring, reproduktion, bevægelse osv., så skal de tilsidesætte metoderne i dyreklassen.

Her er hvad du skal gøre:

1. Opret et klassehierarki:

  • Kødædere : Ulv , Boa , Ræv , Bjørn , Ørn

  • Planteædere : Hest , hjorte , kanin , mus , ged , får , orne , bøfler ,and , larve

  • Planter

Tabellen nedenfor viser, hvor sandsynligt det er, at et dyr spiser "mad", hvis det er på samme sted som det "mad". Lad os se på situationen, hvor "en ulv spiser en kanin". Tallet i tabellen er 60. Det betyder, at hvis en ulv og en kanin er på samme sted, er der 60 % chance for, at ulven spiser kaninen. Du skal bruge en tilfældig talgenerator med flere tråde .

Ulv Boa Ræv Bjørn Ørn Hest Hjort Kanin Mus Ged Får Vildsvin Bøffel And Larve Planter
Ulv - 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æv 0 0 - 0 0 0 0 70 90 0 0 0 0 60 40 0
Bjørn 0 80 0 - 0 40 80 80 90 70 70 50 20 10 0 0
Ørn 0 0 10 0 - 0 0 90 90 0 0 0 0 80 0 0
Hest 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 100
Hjort 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 100
Kanin 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 100
Mus 0 0 0 0 0 0 0 0 - 0 0 0 0 0 90 100
Ged 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 100
Får 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 100
Vildsvin 0 0 0 0 0 0 0 0 50 0 0 - 0 0 90 100
Bøffel 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 100
And 0 0 0 0 0 0 0 0 0 0 0 0 0 - 90 100
Larve 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 100

Dyrenes egenskaber:

Vægt pr. dyr, kg Maksimalt antal dyr af denne art pr. lokalitet Maksimal hastighed (antal lokationer) pr Antal kilo foder, der kræves for at fodre dyret fuldt ud
Ulv 50 30 3 8
Boa 15 30 1 3
Ræv 8 30 2 2
Bjørn 500 5 2 80
Ørn 6 20 3 1
Hest 400 20 4 60
Hjort 300 20 4 50
Kanin 2 150 2 0,45
Mus 0,05 500 1 0,01
Ged 60 140 3 10
Får 70 140 3 15
Vildsvin 400 50 2 50
Bøffel 700 10 3 100
And 1 200 4 0,15
Larve 0,01 1000 0 0
Planter 1 200 N/A N/A

2. Et dyr skal have metoder til at spise , avle og vælge en bevægelsesretning .

3. Du kan implementere spisemetoden i klasserne herbivore og carnivore. Men pas på, den planteædende and spiser larver .

4. I specifikke klasser, der repræsenterer bestemte arter, kan du ændre alle metoderne, så de passer til dyrets egenskaber.

5. Du skal oprette mindst 10 planteædende arter og 5 kødædende arter (beskrevet i punkt 1).

Multithreading

Det er selvfølgelig muligt at skrive hele programmet på én tråd kun ved brug af loops. Men vi skal øve os i at arbejde med multithreading, så du skal bruge tråde og trådpuljer. Én planlagt pulje til at køre tilbagevendende opgaver til plantevækst og dyrehandlinger og en opgave til at vise systemstatistik. Alternativt kan du vise statistikken i en opgave med planterne eller dyrene. Inde i dyrehandlingsopgaven kan du bruge en anden trådpulje - en almindelig. Du bestemmer, hvilke opgaver der skal tildeles denne pulje.

Obligatoriske dele af opgaven:

  • Dyrehierarki (OOP)
  • Dyres adfærd
  • Multithreading
  • Statistik over øens tilstand ved hver iteration (vises på konsollen)

Valgfri dele af opgaven:

  • Vis parametrene ét sted, så det er nemt at styre simuleringen
  • Grafik i stedet for konsolstatistikker. Du kan bruge enten pseudografik i konsollen eller JavaFX, Swing...
  • Tilføj andre faktorer, der kan påvirke simuleringen:
    • flere slags dyr
    • forskellige typer planter
    • tilpasset adfærd for en gruppe dyr (f.eks. jager og bevæger ulve sig som en flok i stedet for hver for sig)
    • terræn, herunder en flod, der hindrer visse dyrs bevægelse

Om indstillinger (hvis du beslutter dig for at tilføje dem)

For at gøre det praktisk at ændre de forskellige indstillinger, når programmet startes (øens størrelse, det maksimalt tilladte antal planter/dyr på et sted, sandsynligheden for, at en bestemt type dyr vil flytte, antallet af afkom i forskellige arter osv. .), skal du placere alle disse indstillinger et sted, for eksempel i en separat klasse. Det skulle være muligt at ændre følgende indstillinger:

  • øens størrelse
  • varigheden af ​​en urcyklus i simuleringen
  • antallet af dyr af hver art ved starten af ​​simuleringen
  • betingelse for at stoppe simuleringen (f.eks. er alle dyr døde)
  • antal afkom for hver dyretype

Unicode (hvis du beslutter dig for at lave pseudografi)

Du kan bruge Unicode-tegn til at afbilde dyrene: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍,, 🦅, 🐇, 🦆, 🐁., .