您的任務是編寫一個由位置數組(例如 100x20 矩陣)組成的參數化島嶼模型。這些地點將充滿植物和動物。動物可以:

  • 吃植物和/或其他動物(如果它們所在的位置有合適的食物),
  • 移動(到鄰近位置),
  • 品種(如果一個位置存在兩種),
  • 餓死或被吃掉。

面向對象

在創建動物宿主時,應盡可能使用 OOP:所有物種都將派生自一個抽象的 Animal 類,該類將包含所有動物共有的行為。如果特定動物在餵養、繁殖、運動等方面具有特定特徵,則它們需要重寫 Animal 類的方法。

這是您需要做的:

1.創建類層次結構:

  • 食肉動物蟒蛇狐狸

  • 食草動物鹿、、山羊綿羊野豬水牛毛蟲

  • 植物

下表顯示了動物在與“食物”處於同一位置時吃“食物”的可能性有多大。再來看看“狼吃兔子”的情況。表中的數字是 60。這意味著如果狼和兔子在同一位置,則狼有 60% 的機會吃掉兔子。您需要使用多線程隨機數生成器

蟒蛇 狐狸 鹿 兔子 老鼠 山羊 公豬 水牛 鴨子 毛蟲 植物
- 0 0 0 0 10 15 60 80 60 70 15 10 40 0 0
蟒蛇 0 - 15 0 0 0 0 20 40 0 0 0 0 10 0 0
狐狸 0 0 - 0 0 0 0 70 90後 0 0 0 0 60 40 0
0 80 0 - 0 40 80 80 90後 70 70 50 20 10 0 0
0 0 10 0 - 0 0 90後 90後 0 0 0 0 80 0 0
0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 100
鹿 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 100
兔子 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 100
老鼠 0 0 0 0 0 0 0 0 - 0 0 0 0 0 90後 100
山羊 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 100
0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 100
公豬 0 0 0 0 0 0 0 0 50 0 0 - 0 0 90後 100
水牛 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 100
鴨子 0 0 0 0 0 0 0 0 0 0 0 0 0 - 90後 100
毛蟲 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 100

動物特徵:

每隻動物的體重,公斤 每個位置該物種的最大動物數量 每轉最大速度(位置數) 完全餵養動物所需的食物公斤數
50 30 3個 8個
蟒蛇 15 30 1個 3個
狐狸 8個 30 2個 2個
500 5個 2個 80
6個 20 3個 1個
400 20 4個 60
鹿 300 20 4個 50
兔子 2個 150 2個 0.45
老鼠 0.05 500 1個 0.01
山羊 60 140 3個 10
70 140 3個 15
公豬 400 50 2個 50
水牛 700 10 3個 100
鴨子 1個 200 4個 0.15
毛蟲 0.01 1000 0 0
植物 1個 200 不適用 不適用

2. 動物必須有進食繁殖選擇運動方向的方法。

3.可以在食草類和食肉類中實現eat方法。但要小心,食草鴨子毛毛蟲

4. 在代表特定物種的特定類中,您可以修改所有方法以適應動物的特徵。

5. 你需要創造至少 10 個食草動物物種和 5 個食肉動物物種(在第 1 項中描述)。

多線程

當然,可以只使用循環在一個線程上編寫整個程序。但是我們需要練習使用多線程,所以你必須使用線程和線程池。一個計劃池用於運行植物生長和動物活動的重複性任務,以及一個用於顯示系統統計信息的任務。或者,您可以在包含植物或動物的任務中顯示統計數據。在動物動作任務中,您可以使用另一個線程池——一個普通線程池。您決定將哪些任務分配給該池。

任務的強制性部分:

  • 動物層次結構 (OOP)
  • 動物行為
  • 多線程
  • 每次迭代時島嶼狀態的統計信息(顯示在控制台上)

任務的可選部分:

  • 在一處顯示參數,以便於管理模擬
  • 圖形而不是控制台統計信息。您可以在控制台中使用偽圖形,也可以使用 JavaFX、Swing...
  • 添加其他可能影響模擬的因素:
    • 更多種類的動物
    • 不同種類的植物
    • 一組動物的自定義行為(例如,狼作為一個整體而不是單獨狩獵和移動)
    • 地面地形,包括阻礙某些動物移動的河流

關於設置(如果您決定添加它們)

為了方便在啟動程序時更改各種設置(島嶼大小、一個位置允許的最大植物/動物數量、特定類型動物移動的概率、不同物種的後代數量等) .),您需要將所有這些設置放在某個地方,例如,放在一個單獨的類中。應該可以更改以下設置:

  • 島嶼大小
  • 模擬中時鐘週期的持續時間
  • 模擬開始時每個物種的動物數量
  • 停止模擬的條件(例如所有動物都死了)
  • 每種動物的後代數量

Unicode(如果你決定做偽圖形)

您可以使用 Unicode 字符來描繪動物:🐃、🐻、🐎、🦌、🐗、🐑、🐐、🐺、🐍、🦊、🦅、🐇、🦆、🐁、🐛。