Tugas Anda adalah memprogram model pulau berparameter yang terdiri dari larik lokasi (misalnya, matriks 100x20). Lokasi akan diisi dengan tumbuhan dan hewan. Hewan dapat:

  • memakan tumbuhan dan/atau hewan lain (jika lokasinya memiliki makanan yang cocok),
  • pindah (ke lokasi tetangga),
  • berkembang biak (jika ada dua jenis di suatu lokasi),
  • mati kelaparan atau dimakan.

OOP

Saat membuat inang hewan, Anda harus menggunakan OOP sebanyak mungkin: semua spesies akan diturunkan dari satu kelas Hewan abstrak, yang akan berisi perilaku yang umum untuk semua hewan. Jika hewan tertentu memiliki fitur khusus dalam hal makan, reproduksi, pergerakan, dll., maka mereka perlu mengganti metode kelas Hewan.

Inilah yang perlu Anda lakukan:

1. Buat hierarki kelas:

  • Karnivora : Serigala , Boa , Rubah , Beruang , Elang

  • Herbivora : Kuda , Rusa , Kelinci , Tikus , Kambing , Domba , Babi Hutan , Kerbau, Bebek , Ulat

  • Tanaman

Tabel di bawah menunjukkan seberapa besar kemungkinan hewan memakan "makanan" jika berada di lokasi yang sama dengan "makanan" tersebut. Mari kita lihat situasi di mana "serigala memakan kelinci". Angka dalam tabel adalah 60. Artinya jika serigala dan kelinci berada di lokasi yang sama, ada kemungkinan 60% serigala akan memakan kelinci tersebut. Anda perlu menggunakan generator nomor acak multithreaded .

Serigala Ular boa Rubah Beruang Burung rajawali Kuda Rusa kelinci Mouse Kambing Domba Babi Kerbau Bebek Ulat Tanaman
Serigala - 0 0 0 0 10 15 60 80 60 70 15 10 40 0 0
Ular boa 0 - 15 0 0 0 0 20 40 0 0 0 0 10 0 0
Rubah 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
Burung rajawali 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
kelinci 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 100
Mouse 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
Domba 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 100
Babi 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
Bebek 0 0 0 0 0 0 0 0 0 0 0 0 0 - 90 100
Ulat 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 100

Ciri-ciri binatang:

Berat per ekor, kg Jumlah maksimum hewan dari spesies ini per lokasi Kecepatan maksimum (jumlah lokasi) per putaran Jumlah kilogram makanan yang dibutuhkan untuk memberi makan hewan sepenuhnya
Serigala 50 30 3 8
Ular boa 15 30 1 3
Rubah 8 30 2 2
Beruang 500 5 2 80
Burung rajawali 6 20 3 1
Kuda 400 20 4 60
Rusa 300 20 4 50
kelinci 2 150 2 0,45
Mouse 0,05 500 1 0,01
Kambing 60 140 3 10
Domba 70 140 3 15
Babi 400 50 2 50
Kerbau 700 10 3 100
Bebek 1 200 4 0,15
Ulat 0,01 1000 0 0
Tanaman 1 200 T/A T/A

2. Seekor hewan harus memiliki cara makan , berkembang biak , dan memilih arah pergerakan .

3. Anda dapat menerapkan metode makan di kelas herbivora dan karnivora. Tapi hati-hati, bebek herbivora memakan ulat .

4. Di kelas tertentu yang mewakili spesies tertentu, Anda dapat memodifikasi semua metode agar sesuai dengan karakteristik hewan.

5. Anda harus membuat setidaknya 10 spesies herbivora dan 5 spesies karnivora (dijelaskan pada Butir 1).

Multithreading

Tentu saja, dimungkinkan untuk menulis seluruh program pada satu utas hanya dengan menggunakan loop. Tapi kami membutuhkan latihan bekerja dengan multithreading, jadi Anda harus menggunakan utas dan kumpulan utas. Satu kumpulan terjadwal untuk menjalankan tugas berulang untuk pertumbuhan tumbuhan dan tindakan hewan, dan tugas untuk menampilkan statistik sistem. Alternatifnya, Anda dapat menampilkan statistik dalam tugas dengan tumbuhan atau hewan. Di dalam tugas aksi hewan, Anda dapat menggunakan kumpulan utas lain — yang biasa. Anda memutuskan tugas mana yang akan ditetapkan ke kumpulan ini.

Bagian wajib dari tugas:

  • Hirarki hewan (OOP)
  • Perilaku hewan
  • Multithreading
  • Statistik negara bagian pulau pada setiap iterasi (ditampilkan di konsol)

Bagian opsional dari tugas:

  • Menampilkan parameter di satu tempat sehingga mudah mengelola simulasi
  • Grafik alih-alih statistik konsol. Anda dapat menggunakan pseudografis di konsol, atau JavaFX, Swing...
  • Tambahkan faktor lain yang dapat memengaruhi simulasi:
    • lebih banyak jenis binatang
    • berbagai jenis tanaman
    • perilaku khusus untuk sekelompok hewan (misalnya, serigala berburu dan bergerak sebagai satu kelompok, bukan secara terpisah)
    • medan tanah, termasuk sungai yang menghambat pergerakan hewan tertentu

Tentang pengaturan (jika Anda memutuskan untuk menambahkannya)

Agar nyaman untuk mengubah berbagai pengaturan saat memulai program (ukuran pulau, jumlah maksimum tanaman / hewan yang diizinkan di satu lokasi, kemungkinan jenis hewan tertentu akan berpindah, jumlah keturunan dalam spesies berbeda, dll. .), Anda perlu meletakkan semua pengaturan ini di suatu tempat, misalnya, di kelas terpisah. Seharusnya dimungkinkan untuk mengubah pengaturan berikut:

  • ukuran pulau
  • durasi siklus clock dalam simulasi
  • jumlah hewan dari setiap spesies pada awal simulasi
  • kondisi untuk menghentikan simulasi (misalnya semua hewan telah mati)
  • jumlah keturunan untuk setiap jenis hewan

Unicode (jika Anda memutuskan untuk melakukan pseudografis)

Anda dapat menggunakan karakter Unicode untuk menggambarkan hewan: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦆, 🐁, 🐛.