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:

  • Hierarki haiwan (OOP)
  • Tingkah laku haiwan
  • Multithreading
  • Statistik tentang keadaan pulau pada setiap lelaran (dipaparkan pada konsol)

Bahagian pilihan tugas:

  • Paparkan parameter di satu tempat supaya mudah untuk menguruskan simulasi
  • Grafik bukannya statistik konsol. Anda boleh menggunakan sama ada pseudografik dalam konsol, atau JavaFX, Swing...
  • Tambah faktor lain yang boleh menjejaskan simulasi:
    • lebih banyak jenis haiwan
    • pelbagai jenis tumbuhan
    • tingkah laku tersuai untuk sekumpulan haiwan (contohnya, serigala memburu dan bergerak sebagai satu pek dan bukannya secara berasingan)
    • rupa bumi, termasuk sungai yang menghalang pergerakan haiwan tertentu

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: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦆, 🐛