您的任務是編寫一個由位置數組(例如 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 項中描述)。
多線程
當然,可以只使用循環在一個線程上編寫整個程序。但是我們需要練習使用多線程,所以你必須使用線程和線程池。一個計劃池用於運行植物生長和動物活動的重複性任務,以及一個用於顯示系統統計信息的任務。或者,您可以在包含植物或動物的任務中顯示統計數據。在動物動作任務中,您可以使用另一個線程池——一個普通線程池。您決定將哪些任務分配給該池。
任務的強制性部分:
任務的可選部分:
|
關於設置(如果您決定添加它們)
為了方便在啟動程序時更改各種設置(島嶼大小、一個位置允許的最大植物/動物數量、特定類型動物移動的概率、不同物種的後代數量等) .),您需要將所有這些設置放在某個地方,例如,放在一個單獨的類中。應該可以更改以下設置:
- 島嶼大小
- 模擬中時鐘週期的持續時間
- 模擬開始時每個物種的動物數量
- 停止模擬的條件(例如所有動物都死了)
- 每種動物的後代數量
Unicode(如果你決定做偽圖形)
您可以使用 Unicode 字符來描繪動物:🐃、🐻、🐎、🦌、🐗、🐑、🐐、🐺、🐍、🦊、🦅、🐇、🦆、🐁、🐛。
GO TO FULL VERSION