作者humorless (休摩里斯)
看板NTUEE111HW
標題Re: [公告]計程廖班作業五公告
時間Sun Jan 6 22:37:18 2008
Dear 廖班的同學,
記得有期末習題講解。(請主動提出問題。我不會知道你們到底那裡會有很多問題~~)
如果我的翻譯和老師的原始題意有出入,以老師的題目為準。
最後,不要copy人家的程式…
by 助教
///////////////////////////////////
這個程式的目的,就是要創造一個簡單的二維捕食與被捕食仿真。在這個模擬實驗中
,獵物是螞蟻和捕食者是doodlebugs 。該critters生活在一個20x20網格。在一段時間,
只有一個critter可能佔據一個細胞。網格是封閉的,所以critter不得移出邊緣的世界。
時間是被步驟所模擬的。在每一輪的移動,每個critter執行了一些行動。在一輪的移動
中,所有的doodlebugs應先於螞蟻移行動。
螞蟻的行為,按下列模型:
運動:對於每一個時間步,螞蟻隨機嘗試移動上,下,左,或右。如果相鄰網格在選定
的方向是被佔用的,或會讓螞蟻移出網格,那麼螞蟻將停留在目前的網格。
繁殖:如果螞蟻能生存三個時間步驟,在最後的那個時間步驟(在移動之後) ,螞蟻
會繁殖。這將被模擬成建立一個新的螞蟻在毗鄰(上,下,左,或右)的空網格。如果沒
有空的網格可用,沒有繁殖發生。一旦後代被生出了,同一隻螞蟻將不能產生後代,直到
它再多生存了3個時間步驟。
該doodlebugs按照下列模式運作:
運動。對於每一個時間步驟, doodlebug將遷往毗鄰有螞蟻的網格,並且吃螞蟻。如果
沒有螞蟻,在毗鄰的網格, doodlebug的運動,將按和螞蟻同樣的規則。注意到一個
doodlebug不能吃其他doodlebug 。
繁殖。如果一個doodlebug存活八個時間步驟,在最後的那個時間步驟,它將生產一隻
新的doodlebug,就像螞蟻的方式一樣。
挨餓:如果一個doodlebug沒有吃任何螞蟻連續三個時間步驟,在最後的第三個時間步
驟,它將挨餓至死亡。該doodlebug應被清除出網格。
編寫程序,以落實這項模擬。描畫出這個模擬的世界上使用ASCII字符劃" O " ,為螞蟻
, " X "為doodlebug 。創造一個class命名為Organism,encapsulate了基本螞蟻和
doodlebugsr共用的data 。這個class應該有一個虛擬函數命名為move,它是在在衍生類
別(class)的Ant和doodlebug中定義的。你可能需要額外的資料結構,以記錄其中任何
critters之動作。
初始化這世界用5隻 doodlebugs和100隻螞蟻。之後,在每一時間步驟提示使用者,按下
Enter以進入到下一個時間步驟。你應該會看到一個週期性模式,出現在掠食者與獵物的數
量分布上,雖然隨機擾動可能導致消除一個或兩個物種
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.42.53
1F:推 angelicdream:選定的的方向被佔據了 要往其他方向移動嗎? 01/07 10:32
2F:→ angelicdream:要是三步時沒空格 第四步出現空格時 還是可以生嗎? 01/07 10:33
3F:推 fp60403:第一個問題有講吧 就停在原格 第二個問題題目不清明天問吧 01/07 23:36