Ang iyong gawain ay mag-program ng isang modelo ng isang parameterized na isla na binubuo ng isang hanay ng mga lokasyon (halimbawa, isang 100x20 matrix). Ang mga lokasyon ay mapupuno ng mga halaman at hayop. Ang mga hayop ay maaaring:
- kumain ng mga halaman at/o iba pang mga hayop (kung ang kanilang lokasyon ay may angkop na pagkain),
- lumipat (sa mga kalapit na lokasyon),
- lahi (kung may dalawa sa isang uri sa isang lokasyon),
- mamatay sa gutom o kakainin.
OOP
Kapag gumagawa ng iyong host ng mga hayop, dapat mong gamitin ang OOP hangga't maaari: ang lahat ng mga species ay magmumula sa isang abstract na klase ng Animal, na maglalaman ng pag-uugali na karaniwan sa lahat ng mga hayop. Kung ang mga partikular na hayop ay may mga partikular na tampok tungkol sa kanilang pagpapakain, pagpaparami, paggalaw, atbp., pagkatapos ay kailangan nilang i-override ang mga pamamaraan ng klase ng Hayop.
Narito ang kailangan mong gawin:
1. Lumikha ng hierarchy ng klase:
-
Mga Carnivore : Lobo , Boa , Fox , Oso , Agila
-
Mga Herbivore :Kabayo , Usa , Kuneho , Daga , Kambing , Tupa, Bulugan , Kalabaw , Itik , Uod
-
Mga halaman
Ipinapakita ng talahanayan sa ibaba kung gaano kalamang na makakain ng "pagkain" ang isang hayop kung ito ay nasa parehong lokasyon ng "pagkain" na iyon. Tingnan natin ang sitwasyon kung saan "ang lobo ay kumakain ng kuneho". Ang numero sa talahanayan ay 60. Nangangahulugan ito na kung ang isang lobo at kuneho ay nasa parehong lokasyon, mayroong 60% na posibilidad na kainin ng lobo ang kuneho. Kailangan mong gumamit ng multithreaded random number generator .
Lobo | Boa | Fox | Oso | Agila | Kabayo | usa | Kuneho | Daga | kambing | tupa | baboy-ramo | kalabaw | Itik | Uod | Mga halaman | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Lobo | - | 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 |
Fox | 0 | 0 | - | 0 | 0 | 0 | 0 | 70 | 90 | 0 | 0 | 0 | 0 | 60 | 40 | 0 |
Oso | 0 | 80 | 0 | - | 0 | 40 | 80 | 80 | 90 | 70 | 70 | 50 | 20 | 10 | 0 | 0 |
Agila | 0 | 0 | 10 | 0 | - | 0 | 0 | 90 | 90 | 0 | 0 | 0 | 0 | 80 | 0 | 0 |
Kabayo | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
usa | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
Kuneho | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
Daga | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 90 | 100 |
kambing | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 100 |
tupa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 100 |
baboy-ramo | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 0 | - | 0 | 0 | 90 | 100 |
kalabaw | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 100 |
Itik | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 90 | 100 |
Uod | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 100 |
Mga katangian ng hayop:
Timbang bawat hayop, kg | Pinakamataas na bilang ng mga hayop ng species na ito sa bawat lokasyon | Pinakamataas na bilis (bilang ng lokasyon) bawat pagliko | Bilang ng mga kilo ng pagkain na kinakailangan upang ganap na mapakain ang hayop | |
---|---|---|---|---|
Lobo | 50 | 30 | 3 | 8 |
Boa | 15 | 30 | 1 | 3 |
Fox | 8 | 30 | 2 | 2 |
Oso | 500 | 5 | 2 | 80 |
Agila | 6 | 20 | 3 | 1 |
Kabayo | 400 | 20 | 4 | 60 |
usa | 300 | 20 | 4 | 50 |
Kuneho | 2 | 150 | 2 | 0.45 |
Daga | 0.05 | 500 | 1 | 0.01 |
kambing | 60 | 140 | 3 | 10 |
tupa | 70 | 140 | 3 | 15 |
baboy-ramo | 400 | 50 | 2 | 50 |
kalabaw | 700 | 10 | 3 | 100 |
Itik | 1 | 200 | 4 | 0.15 |
Uod | 0.01 | 1000 | 0 | 0 |
Mga halaman | 1 | 200 | N/A | N/A |
2. Ang isang hayop ay dapat may mga pamamaraan sa pagkain , pagpaparami , at pagpili ng direksyon para sa paggalaw .
3. Maaari mong ipatupad ang paraan ng pagkain sa mga klase ng herbivore at carnivore. Ngunit mag-ingat, ang herbivore duck ay kumakain ng mga uod .
4. Sa mga partikular na klase na kumakatawan sa partikular na species, maaari mong baguhin ang lahat ng mga pamamaraan upang umangkop sa mga katangian ng hayop.
5. Kailangan mong lumikha ng hindi bababa sa 10 herbivore species at 5 carnivore species (inilalarawan sa Item 1).
Multithreading
Siyempre, posible na isulat ang buong programa sa isang thread gamit lamang ang mga loop. Ngunit kailangan namin ng pagsasanay sa pagtatrabaho sa multithreading, kaya dapat kang gumamit ng mga thread at thread pool. Isang naka-iskedyul na pool na magpapatakbo ng mga umuulit na gawain para sa paglaki ng halaman at mga pagkilos ng hayop, at isang gawain upang ipakita ang mga istatistika ng system. Bilang kahalili, maaari mong ipakita ang mga istatistika sa isang gawain kasama ang mga halaman o hayop. Sa loob ng gawaing pagkilos ng hayop, maaari kang gumamit ng isa pang thread pool - isang ordinaryong. Ikaw ang magpapasya kung aling mga gawain ang itatalaga sa pool na ito.
Mga kinakailangang bahagi ng gawain:
Mga opsyonal na bahagi ng gawain:
|
Tungkol sa mga setting (kung magpasya kang idagdag ang mga ito)
Upang gawing maginhawang baguhin ang iba't ibang mga setting kapag sinimulan ang programa (ang laki ng isla, ang maximum na pinapayagang bilang ng mga halaman / hayop sa isang lokasyon, ang posibilidad na ang isang partikular na uri ng hayop ay lumipat, ang bilang ng mga supling sa iba't ibang uri ng hayop, atbp. .), kailangan mong ilagay ang lahat ng mga setting na ito sa isang lugar, halimbawa, sa isang hiwalay na klase. Posibleng baguhin ang mga sumusunod na setting:
- laki ng isla
- tagal ng isang ikot ng orasan sa simulation
- ang bilang ng mga hayop ng bawat species sa simula ng simulation
- kundisyon para ihinto ang simulation (hal. lahat ng hayop ay namatay)
- bilang ng mga supling para sa bawat uri ng hayop
Unicode (kung nagpasya kang gumawa ng pseudographics)
Maaari mong gamitin ang mga character na Unicode upang ilarawan ang mga hayop: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦆, 🐛
GO TO FULL VERSION