作者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