Nhiệm vụ của bạn là lập trình một mô hình của một hòn đảo được tham số hóa bao gồm một mảng các vị trí (ví dụ: ma trận 100x20). Các địa điểm sẽ có nhiều thực vật và động vật. Động vật có thể:

  • ăn thực vật và/hoặc động vật khác (nếu vị trí của chúng có thức ăn phù hợp),
  • di chuyển (đến các địa điểm lân cận),
  • giống (nếu hai loại tồn tại ở một địa điểm),
  • chết đói hoặc bị ăn thịt.

OOP

Khi tạo máy chủ lưu trữ động vật của bạn, bạn nên sử dụng OOP càng nhiều càng tốt: tất cả các loài sẽ bắt nguồn từ một lớp Động vật trừu tượng, lớp này sẽ chứa hành vi chung cho tất cả các loài động vật. Nếu các động vật cụ thể có các tính năng cụ thể liên quan đến việc kiếm ăn, sinh sản, di chuyển, v.v., thì chúng cần ghi đè các phương thức của lớp Động vật.

Đây là những gì bạn cần làm:

1. Tạo phân cấp lớp:

  • Động vật ăn thịt : Sói , Trăn , Cáo , Gấu , Đại bàng

  • Động vật ăn cỏ : Ngựa , Hươu , Thỏ , Chuột , , Cừu , Lợn rừng , Trâu , Vịt , Sâu bướm

  • Thực vật

Bảng dưới đây cho thấy khả năng một con vật ăn "thức ăn" nếu nó ở cùng vị trí với "thức ăn" đó. Hãy xem tình huống "sói ăn thịt thỏ". Con số trong bảng là 60. Điều này có nghĩa là nếu sói và thỏ ở cùng một vị trí, thì có 60% khả năng sói sẽ ăn thịt thỏ. Bạn cần sử dụng trình tạo số ngẫu nhiên đa luồng .

chó sói boa cáo Con gấu chim ưng Ngựa Con nai Con thỏ Chuột Con dê Con cừu heo rừng Trâu Con vịt sâu róm Thực vật
chó sói - 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
cáo 0 0 - 0 0 0 0 70 90 0 0 0 0 60 40 0
Con gấu 0 80 0 - 0 40 80 80 90 70 70 50 20 10 0 0
chim ưng 0 0 10 0 - 0 0 90 90 0 0 0 0 80 0 0
Ngựa 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 100
Con nai 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 100
Con thỏ 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 100
Chuột 0 0 0 0 0 0 0 0 - 0 0 0 0 0 90 100
Con dê 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 100
Con cừu 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 100
heo rừng 0 0 0 0 0 0 0 0 50 0 0 - 0 0 90 100
Trâu 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 100
Con vịt 0 0 0 0 0 0 0 0 0 0 0 0 0 - 90 100
sâu róm 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 100

Đặc điểm động vật:

Trọng lượng mỗi con, kg Số lượng động vật tối đa của loài này trên mỗi địa điểm Tốc độ tối đa (số vị trí) mỗi lượt Số kg thức ăn cần cung cấp đầy đủ cho con vật
chó sói 50 30 3 số 8
boa 15 30 1 3
cáo số 8 30 2 2
Con gấu 500 5 2 80
chim ưng 6 20 3 1
Ngựa 400 20 4 60
Con nai 300 20 4 50
Con thỏ 2 150 2 0,45
Chuột 0,05 500 1 0,01
Con dê 60 140 3 10
Con cừu 70 140 3 15
heo rừng 400 50 2 50
Trâu 700 10 3 100
Con vịt 1 200 4 0,15
sâu róm 0,01 1000 0 0
Thực vật 1 200 không áp dụng không áp dụng

2. Con vật phải có phương thức ăn uống , sinh sảnchọn hướng di chuyển .

3. Bạn có thể thực hiện phương thức ăn trong lớp động vật ăn cỏ và động vật ăn thịt. Nhưng hãy cẩn thận, vịt ăn cỏ ăn sâu bướm .

4. Trong các lớp cụ thể đại diện cho các loài cụ thể, bạn có thể sửa đổi tất cả các phương pháp cho phù hợp với đặc điểm của động vật.

5. Bạn cần tạo ít nhất 10 loài ăn cỏ và 5 loài ăn thịt (đã mô tả ở mục 1).

đa luồng

Tất nhiên, có thể viết toàn bộ chương trình trên một luồng chỉ bằng các vòng lặp. Nhưng chúng ta cần thực hành làm việc với đa luồng, vì vậy bạn phải sử dụng luồng và nhóm luồng. Một nhóm được lên lịch để chạy các tác vụ định kỳ cho sự phát triển của thực vật và hành động của động vật cũng như một tác vụ để hiển thị số liệu thống kê hệ thống. Ngoài ra, bạn có thể hiển thị số liệu thống kê trong một nhiệm vụ với thực vật hoặc động vật. Bên trong nhiệm vụ hành động động vật, bạn có thể sử dụng một nhóm chủ đề khác - một nhóm thông thường. Bạn quyết định sẽ giao nhiệm vụ nào cho nhóm này.

Các phần bắt buộc của nhiệm vụ:

  • Phân cấp động vật (OOP)
  • hành vi động vật
  • đa luồng
  • Thống kê trạng thái của đảo tại mỗi lần lặp (hiển thị trên bàn điều khiển)

Các phần tùy chọn của nhiệm vụ:

  • Hiển thị các thông số ở một nơi để dễ dàng quản lý mô phỏng
  • Đồ họa thay vì số liệu thống kê bảng điều khiển. Bạn có thể sử dụng đồ họa giả trong bảng điều khiển hoặc JavaFX, Swing...
  • Thêm các yếu tố khác có thể ảnh hưởng đến mô phỏng:
    • nhiều loại động vật hơn
    • các loại thực vật khác nhau
    • hành vi tùy chỉnh cho một nhóm động vật (ví dụ: chó sói săn mồi và di chuyển theo bầy chứ không phải riêng lẻ)
    • địa hình mặt đất, bao gồm cả một dòng sông cản trở sự di chuyển của một số loài động vật

Giới thiệu về cài đặt (nếu bạn quyết định thêm chúng)

Để thuận tiện thay đổi các cài đặt khác nhau khi bắt đầu chương trình (kích thước đảo, số lượng thực vật / động vật tối đa cho phép tại một địa điểm, xác suất một loại động vật cụ thể sẽ di chuyển, số lượng con của các loài khác nhau, v.v. .), bạn cần đặt tất cả các cài đặt này ở đâu đó, chẳng hạn như trong một lớp riêng. Có thể thay đổi các cài đặt sau:

  • kích thước đảo
  • thời lượng của một chu kỳ đồng hồ trong mô phỏng
  • số lượng động vật của mỗi loài khi bắt đầu mô phỏng
  • điều kiện để dừng mô phỏng (ví dụ: tất cả động vật đã chết)
  • số con của mỗi loại động vật

Unicode (nếu bạn quyết định làm bút giả)

Bạn có thể sử dụng các ký tự Unicode để mô tả các con vật: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦆, 🐁, 🐛.