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:
Valgfrie deler av oppgaven:
|
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: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍,, 🦅, 🐇, 🦆, 🐁., .