Din oppgave er å programmere en modell av en parameterisert øy som består av en rekke steder (for eksempel en 100x20 matrise). Lokalitetene vil være befolket med planter og dyr. Dyr kan:

  • spise planter og/eller andre dyr (hvis stedet har passende mat),
  • flytte (til nærliggende steder),
  • rase (hvis to like finnes på et sted),
  • dø av sult eller bli spist.

OOP

Når du oppretter en rekke dyr, bør du bruke OOP så mye som mulig: alle arter kommer fra én abstrakt dyreklasse, som vil inneholde atferden som er felles for alle dyr. Hvis spesifikke dyr har spesifikke egenskaper med hensyn til fôring, reproduksjon, bevegelse osv., må de overstyre metodene til dyreklassen.

Her er hva du må gjøre:

1. Lag et klassehierarki:

  • Rovdyr : ulv , boa , rev , bjørn , ørn

  • Planteetere : Hest , hjort , kanin , mus , geit , sau , villsvin , bøfler , and , larve

  • Planter

Tabellen nedenfor viser hvor sannsynlig det er at et dyr spiser "mat" hvis det er på samme sted som den "maten". La oss se på situasjonen der "en ulv spiser en kanin". Tallet i tabellen er 60. Dette betyr at hvis en ulv og en kanin er på samme sted, er det 60 % sjanse for at ulven spiser kaninen. Du må bruke en tilfeldig tallgenerator med flere tråder .

Ulv Boa rev Bjørn Ørn Hest Hjort Kanin Mus Geit Sau Villsvin 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
rev 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
Geit 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 100
Sau 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 100
Villsvin 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

Dyreegenskaper:

Vekt per dyr, kg Maksimalt antall dyr av denne arten per sted Maksimal hastighet (antall plasseringer) per sving Antall kilo mat som kreves for å fullføre dyret
Ulv 50 30 3 8
Boa 15 30 1 3
rev 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
Geit 60 140 3 10
Sau 70 140 3 15
Villsvin 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 må ha metoder for å spise , avle og velge en bevegelsesretning .

3. Du kan implementere spisemetoden i klassene planteetere og kjøttetere. Men vær forsiktig, planteetende anda spiser larver .

4. I spesifikke klasser som representerer bestemte arter, kan du endre alle metodene for å passe til dyrets egenskaper.

5. Du må lage minst 10 planteetere og 5 rovdyrarter (beskrevet i punkt 1).

Multithreading

Selvfølgelig er det mulig å skrive hele programmet på en tråd ved å bruke bare løkker. Men vi trenger øving på å jobbe med multithreading, så du må bruke tråder og trådpooler. Ett planlagt basseng for å kjøre tilbakevendende oppgaver for plantevekst og dyrehandlinger, og en oppgave for å vise systemstatistikk. Alternativt kan du vise statistikken i en oppgave med plantene eller dyrene. Inne i dyrehandlingsoppgaven kan du bruke en annen trådpool - en vanlig. Du bestemmer hvilke oppgaver som skal tildeles denne poolen.

Obligatoriske deler av oppgaven:

  • Dyrehierarki (OOP)
  • Dyreadferd
  • Multithreading
  • Statistikk over tilstanden til øya ved hver iterasjon (vises på konsollen)

Valgfrie deler av oppgaven:

  • Vis parametrene på ett sted slik at det er enkelt å administrere simuleringen
  • Grafikk i stedet for konsollstatistikk. Du kan bruke enten pseudografikk i konsollen, eller JavaFX, Swing...
  • Legg til andre faktorer som kan påvirke simuleringen:
    • flere typer dyr
    • ulike typer planter
    • tilpasset oppførsel for en gruppe dyr (for eksempel, ulver jakter og beveger seg som en flokk i stedet for hver for seg)
    • bakketerreng, inkludert en elv som hindrer bevegelsen til visse dyr

Om innstillinger (hvis du bestemmer deg for å legge dem til)

For å gjøre det praktisk å endre de forskjellige innstillingene når du starter programmet (øystørrelsen, maksimalt tillatt antall planter/dyr på ett sted, sannsynligheten for at en bestemt type dyr vil flytte, antall avkom i forskjellige arter osv. .), må du legge alle disse innstillingene et sted, for eksempel i en egen klasse. Det skal være mulig å endre følgende innstillinger:

  • øystørrelse
  • varigheten av en klokkesyklus i simuleringen
  • antall dyr av hver art ved starten av simuleringen
  • betingelse for å stoppe simuleringen (f.eks. har alle dyrene døde)
  • antall avkom for hver dyretype

Unicode (hvis du bestemmer deg for å gjøre pseudografikk)

Du kan bruke Unicode-tegn for å skildre dyrene: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍,, 🦅, 🐇, 🦆, 🐁., .