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 , Dê , 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ản và chọ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ụ:
Các phần tùy chọn của nhiệm vụ:
|
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: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦆, 🐁, 🐛.
GO TO FULL VERSION