程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-C++課程設計 捕食者與被捕食者

c++-C++課程設計 捕食者與被捕食者

編輯:編程綜合問答
C++課程設計 捕食者與被捕食者

創建簡單的二維“捕食者-被捕食者”模擬。在這個模擬中,被捕食者是螞蟻(ant),捕食者是獅蟻(doodlebug)。這些小生物生活在20×20的網格中。每個單元格每次只能由一個個體占據。網格是封閉的,所以個體不允許離開世界邊緣。時間以time step為單位。個體在每個time step裡面都要采取某項行動。

螞蟻的行為像下面這樣建模。
Move(移動):在每個time step中,都隨機向上、向下、向左或者向右移動。假如所選方向上的鄰居單元格被占據,或者會造成螞蟻移動到網格的邊緣之外,那麼螞蟻就停留在當前的單元格中。
Breed(繁殖):如果一只螞蟻在3個time step中保存存活,在第3個time step結束之後(也就是在移動之後),該螞蟻會繁殖。為了模擬繁殖,需要在相鄰(上、下、左或者右)的一個空單元格中創建一只新螞蟻。沒有可用的空單元格,就不會繁殖。一旦成功繁殖出後代,除非再次經歷3個time step,否則不能繁殖另一個後代。

獅蟻的行為像下面這樣建模。
Move(移動):在每個time step中,假如有一只相鄰的螞蟻(上、下、左或者右),就移動到那個單元格,吃掉螞蟻。否則,獅蟻就按照和螞蟻相同的規則移動。注意,獅蟻不能吃掉獅蟻。
Breed(繁殖):假如一只獅蟻在8個time step中保持存活,在第8個time step結束之後,會按照與螞蟻相同的方式繁殖出一只新獅蟻。
Starve(饑餓):假如一只獅蟻在連續3個time step中沒有吃掉一只螞蟻,在第3個time step結束之後,它會感到饑餓並死亡。該獅蟻應從網格中拿掉。
在一輪中,所有獅蟻都應該先於螞蟻移動。

寫程序來實現這個模擬,使用ASCII字符“o”表示螞蟻,“x”表示獅蟻。創建名為Organism(有機生物)的類,它封裝了通用於螞蟻和獅蟻的基本數據。該類應該有一個名為Move的virtual函數,它要在派生類Ant和Doodlebug中進行具體的定義。可能需要額外的數據結構來跟蹤已移動的生物。
使用5只獅蟻和100只螞蟻初始化這個世界。在每個time step後,都提示用戶按Enter鍵移動到下一個time step。應該看到獅蟻和螞蟻數量的循環變化——雖然一些隨機性的混亂可能造成一種或兩種生物的毀滅。

最佳回答:


樓上的答案看上去好高大上啊

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved