Tugas anda ialah memprogramkan model pulau berparameter yang terdiri daripada tatasusunan lokasi (contohnya, matriks 100x20). Lokasi akan dihuni dengan tumbuh-tumbuhan dan haiwan. Haiwan boleh:
- makan tumbuhan dan/atau haiwan lain (jika lokasi mereka mempunyai makanan yang sesuai),
- berpindah (ke lokasi jiran),
- baka (jika dua jenis wujud di lokasi),
- mati kelaparan atau dimakan.
OOP
Apabila mencipta hos haiwan anda, anda harus menggunakan OOP sebanyak mungkin: semua spesies akan diperoleh daripada satu kelas Haiwan abstrak, yang akan mengandungi tingkah laku yang biasa kepada semua haiwan. Jika haiwan tertentu mempunyai ciri khusus dalam hal pemakanan, pembiakan, pergerakan, dsb., maka mereka perlu mengatasi kaedah kelas Haiwan.
Inilah perkara yang perlu anda lakukan:
1. Buat hierarki kelas:
-
Karnivor : Serigala , Boa , Musang , Beruang , Helang
-
Herbivor : Kuda , Rusa , Arnab , Tikus , Kambing , Biribiri , Babi Babi , Kerbau , Itik, Ulat
-
Tumbuhan
Jadual di bawah menunjukkan kemungkinan haiwan memakan "makanan" jika ia berada di lokasi yang sama dengan "makanan" itu. Mari kita lihat situasi di mana "serigala makan arnab". Nombor dalam jadual ialah 60. Ini bermakna jika serigala dan arnab berada di lokasi yang sama, terdapat 60% kemungkinan serigala itu akan memakan arnab tersebut. Anda perlu menggunakan penjana nombor rawak berbilang benang .
Serigala | Boa | Fox | beruang | Helang | kuda | Rusa | Arnab | tetikus | kambing | biri-biri | babi hutan | Kerbau | Itik | Caterpillar | Tumbuhan | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Serigala | - | 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 |
beruang | 0 | 80 | 0 | - | 0 | 40 | 80 | 80 | 90 | 70 | 70 | 50 | 20 | 10 | 0 | 0 |
Helang | 0 | 0 | 10 | 0 | - | 0 | 0 | 90 | 90 | 0 | 0 | 0 | 0 | 80 | 0 | 0 |
kuda | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
Rusa | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
Arnab | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
tetikus | 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 |
biri-biri | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 100 |
babi hutan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 0 | - | 0 | 0 | 90 | 100 |
Kerbau | 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 |
Caterpillar | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 100 |
Ciri-ciri haiwan:
Berat setiap haiwan, kg | Bilangan maksimum haiwan spesies ini setiap lokasi | Kelajuan maksimum (bilangan lokasi) setiap pusingan | Bilangan kilogram makanan yang diperlukan untuk memberi makan haiwan sepenuhnya | |
---|---|---|---|---|
Serigala | 50 | 30 | 3 | 8 |
Boa | 15 | 30 | 1 | 3 |
Fox | 8 | 30 | 2 | 2 |
beruang | 500 | 5 | 2 | 80 |
Helang | 6 | 20 | 3 | 1 |
kuda | 400 | 20 | 4 | 60 |
Rusa | 300 | 20 | 4 | 50 |
Arnab | 2 | 150 | 2 | 0.45 |
tetikus | 0.05 | 500 | 1 | 0.01 |
kambing | 60 | 140 | 3 | 10 |
biri-biri | 70 | 140 | 3 | 15 |
babi hutan | 400 | 50 | 2 | 50 |
Kerbau | 700 | 10 | 3 | 100 |
Itik | 1 | 200 | 4 | 0.15 |
Caterpillar | 0.01 | 1000 | 0 | 0 |
Tumbuhan | 1 | 200 | T/A | T/A |
2. Haiwan mesti mempunyai kaedah untuk makan , membiak , dan memilih arah pergerakan .
3. Anda boleh melaksanakan kaedah makan dalam kelas herbivor dan karnivor. Tetapi berhati-hati, itik herbivor makan ulat .
4. Dalam kelas tertentu yang mewakili spesies tertentu, anda boleh mengubah suai semua kaedah agar sesuai dengan ciri haiwan tersebut.
5. Anda perlu mencipta sekurang-kurangnya 10 spesies herbivor dan 5 spesies karnivor (diterangkan dalam Item 1).
Multithreading
Sudah tentu, adalah mungkin untuk menulis keseluruhan program pada satu utas hanya menggunakan gelung. Tetapi kami memerlukan latihan bekerja dengan multithreading, jadi anda mesti menggunakan benang dan kumpulan benang. Satu kumpulan yang dijadualkan untuk menjalankan tugas berulang untuk pertumbuhan tumbuhan dan tindakan haiwan, dan tugas untuk memaparkan statistik sistem. Sebagai alternatif, anda boleh memaparkan statistik dalam tugasan dengan tumbuhan atau haiwan. Di dalam tugas tindakan haiwan, anda boleh menggunakan kumpulan benang lain - yang biasa. Anda memutuskan tugasan yang hendak diberikan kepada kumpulan ini.
Bahagian wajib tugas:
Bahagian pilihan tugas:
|
Mengenai tetapan (jika anda memutuskan untuk menambahkannya)
Untuk memudahkan anda menukar pelbagai tetapan semasa memulakan program (saiz pulau, bilangan maksimum tumbuhan / haiwan yang dibenarkan di satu lokasi, kebarangkalian bahawa jenis haiwan tertentu akan bergerak, bilangan anak dalam spesies yang berbeza, dsb. .), anda perlu meletakkan semua tetapan ini di suatu tempat, sebagai contoh, dalam kelas yang berasingan. Anda boleh menukar tetapan berikut:
- saiz pulau
- tempoh kitaran jam dalam simulasi
- bilangan haiwan setiap spesies pada permulaan simulasi
- syarat untuk menghentikan simulasi (cth semua haiwan telah mati)
- bilangan anak bagi setiap jenis haiwan
Unicode (jika anda memutuskan untuk melakukan pseudografik)
Anda boleh menggunakan aksara Unicode untuk menggambarkan haiwan: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦆, 🐛