CodeGym /課程 /All lectures for TW purposes /模塊 2 的最終項目練習

模塊 2 的最終項目練習

All lectures for TW purposes
等級 1, 課堂 710
開放

您的任務是編寫一個由位置數組(例如 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 字符來描繪動物:🐃、🐻、🐎、🦌、🐗、🐑、🐐、🐺、🐍、🦊、🦅、🐇、🦆、🐁、🐛。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION