Senga berilgan vazifa - o‘zgaruvchan parametrlar bilan orol modelini dasturlash, u joylarning massividan iborat bo‘ladi (masalan, 100x20 hujayra). Joylar o‘simliklar va hayvonlar bilan to‘ldiriladi. Hayvonlar quyidagi harakatlarni amalga oshirishi mumkin:
- o‘simliklar va/yoki boshqa hayvonlarni yeyish (agar ularning joyida mos ovqat bo‘lsa),
- harakat qilish (qo‘shni joylarga),
- ko‘payish (agar ularning joyida juftlik bo‘lsa),
- ochlikdan o‘lish yoki yeb qo‘yilish.
ООП
Hayvonlarning turli-tumanligini yaratishda maksimal darajada OOP-ni ishlatish kerak: barcha turlar bitta abtsrakt Animal klassidan keladi, u barcha hayvonlar uchun umumiy harakatlarni o‘z ichiga oladi. Agar har bir hayvonda oziqlanish, ko‘payish, harakatlanish kabi xususiyatlar bo‘lsa, ularga Animal klassidan metodlarni qayta yozish kerak bo‘ladi.
Nima qilish kerak:
1. Klasslar iyerarxiyasini yarat:
Yirtqich: Bo‘ri, Ilan, Tulk, Ayiq, Burgut
O‘txo‘rlar: Ot, Bug‘u, Quyon, Sichqon, Echki, Qo‘y, To‘ng‘iz, Bizon, O‘rdak, G‘uncha
O‘simliklar
Quyidagi jadvalda hayvonning "ovqat"ni yemoqchi bo‘lish ehtimoli keltirilgan, agar ular bitta hujayrada bo‘lsa. "bo‘ri quyonni yeydi" holatiga qarang. Jadvalda raqam 60. Bu degani, bo‘ri quyonni bitta hujayrada bo‘lsa, 60% ehtimol bilan yeyishi mumkin. Ko‘p ipli randomdan foydalanish kerak.
| Bo‘ri | Ilan | Tulk | Ayiq | Burgut | Ot | Bug‘u | Quyon | Sichqon | Echki | Qo‘y | To‘ng‘iz | Bizon | O‘rdak | G‘uncha | O‘simliklar | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Bo‘ri | - | 0 | 0 | 0 | 0 | 10 | 15 | 60 | 80 | 60 | 70 | 15 | 10 | 40 | 0 | 0 |
| Ilan | 0 | - | 15 | 0 | 0 | 0 | 0 | 20 | 40 | 0 | 0 | 0 | 0 | 10 | 0 | 0 |
| Tulk | 0 | 0 | - | 0 | 0 | 0 | 0 | 70 | 90 | 0 | 0 | 0 | 0 | 60 | 40 | 0 |
| Ayiq | 0 | 80 | 0 | - | 0 | 40 | 80 | 80 | 90 | 70 | 70 | 50 | 20 | 10 | 0 | 0 |
| Burgut | 0 | 0 | 10 | 0 | - | 0 | 0 | 90 | 90 | 0 | 0 | 0 | 0 | 80 | 0 | 0 |
| Ot | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
| Bug‘u | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
| Quyon | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
| Sichqon | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 90 | 100 |
| Echki | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 100 |
| Qo‘y | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 100 |
| To‘ng‘iz | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 0 | - | 0 | 0 | 90 | 100 |
| Bizon | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 100 |
| O‘rdak | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 90 | 100 |
| G‘uncha | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 100 |
Hayvonlarning xususiyatlari:
| Bitta hayvonning vazni, kg | Bitta joyda bu turdan hayvonlar sonining maksimal miqdori | Ko‘chish tezligi, bitta yurishda maksimal hujayralar soni | Hayvon to‘liq to‘yishi uchun zarur oziq-ovqat kilogrammi | |
|---|---|---|---|---|
| Bo‘ri | 50 | 30 | 3 | 8 |
| Ilan | 15 | 30 | 1 | 3 |
| Tulk | 8 | 30 | 2 | 2 |
| Ayiq | 500 | 5 | 2 | 80 |
| Burgut | 6 | 20 | 3 | 1 |
| Ot | 400 | 20 | 4 | 60 |
| Bug‘u | 300 | 20 | 4 | 50 |
| Quyon | 2 | 150 | 2 | 0,45 |
| Sichqon | 0.05 | 500 | 1 | 0.01 |
| Echki | 60 | 140 | 3 | 10 |
| Qo‘y | 70 | 140 | 3 | 15 |
| To‘ng‘iz | 400 | 50 | 2 | 50 |
| Bizon | 700 | 10 | 3 | 100 |
| O‘rdak | 1 | 200 | 4 | 0,15 |
| G‘uncha | 0.01 | 1000 | 0 | 0 |
| O‘simliklar | 1 | 200 | N/A | N/A |
2. Hayvonda metodlar bo‘lishi kerak: pokuş, ko‘payish, harakat yo‘nalishini tanlash.
3. O‘txo‘r va yirtqich klasslarda pokuş metodini amalga oshirish mumkin. Lekin bir narsani e'tiborga ol, o‘txo‘r o‘rdak, g‘unchani yeydi.
4. Har bir turdagi alohida klasslarda barcha metodlarni hayvonning xususiyatlariga moslashtirish mumkin.
5. Kamida 10 turdagi o‘txo‘r va 5 turdagi yirtqich hayvonlar yaratilishi kerak (p. 1da tavsiflangan).
Ko‘p ipliklilik
Albatta, butun dastur bitta ipda yozilishi mumkin, faqat tsikllardan foydalanib. Lekin biz ko‘p ipliklilik bilan ishlashni amaliyotda sinab ko‘rishimiz kerak, shuning uchun albatta iplar va ipli poollardan foydalanish kerak. Bitta scheduled pool - o‘simliklarning o‘sishi vazifasini, hayvonlarning hayotiy sikli vazifasini va tizim bo‘yicha statistikani chiqarish vazifasini jadval bo‘yicha ishga tushirish uchun. Variant sifatida, statistikani o‘simliklar yoki hayvonlar bilan birgalikda bitta vazifa qilib chiqarish mumkin. Hayvonlarning hayotiy sikli vazifasi ichida yana bitta oddiy ip poolini ishlatish mumkin. Bu poolga qaysi vazifalarni berish - o‘zing hal qil.
| Majburiy qism:
Majburiy bo‘lmagan qism:
|
Parametrlar haqida (agar qilishga qaror qilsang)
Dastur ishga tushirilganda har xil parametrlarni (orol hajmi, bitta hujayrada maksimal ruxsat berilgan o‘simliklar/hayvonlar soni, hayvonlarning harakati ehtimoli, har xil turlarning tug‘ilish soni va hk.) o‘zgartirish oson bo‘lishi uchun, barcha bu parametrlarni boshqa joyga, masalan, alohida klassga chiqarish kerak. Quyidagi parametrlarni o‘zgartirish imkoniyati bo‘lishi kerak:
- orol hajmi
- simulyatsiya yurishi davomiyligi
- simulyatsiya boshlang‘ichida har bir turdagi hayvonlar soni
- simulyatsiyani to‘xtatish sharti (masalan, barcha hayvonlar o‘ldi)
- har bir turdagi hayvonlarning tug‘ilishi soni
Unicode (agar psevdografika qilishga qaror qilsang)
Hayvonlarni tasvirlash uchun Unicode belgilaridan foydalanishingiz mumkin: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦆, 🐁, 🐛.
Loyiha guruh tomonidan uning o‘tishi davomida tekshiriladi
Loyiha haqida umumiy ma'lumot
GO TO FULL VERSION