C++狮蚁和蚂蚁程序
问题描述:
本程序练习的目标是创建一个简单的二维的:掠夺者——被掠夺者的模拟。在模拟中,蚂蚁是被掠夺者,狮蚁是掠夺者。这些小生物住在20*20单元的网格中,在同一时间一个生物只能占有一个单元。网格是封闭的,所有生物不准移出边界。我们按时间步来进行模拟,在每个时间步每个生物执行一些动作。
蚂蚁的活动依照如下模型:
*移动。在每一个时间步蚂蚁随即上下左右移动,如果所选方位上的相邻单元格被占据,或是移出网格,蚂蚁将原地不动。
*繁殖。如果蚂蚁存活了3个时间步,在第3个时间步结束后,蚂蚁将进行繁殖。是通过相临的单元格(上下左右)来生成一只新的蚂蚁模拟。如果蚂蚁相邻的单元格没有空的单元,将不进行繁殖。一旦诞生后代,蚂蚁将不在繁殖直到它又存活了3个时间步。
狮蚁的活动模型:
*移动。在每一个时间步,狮蚁将向含有蚂蚁的相邻单元格移动并吃掉蚂蚁。如果相邻的单元格没有蚂蚁,则狮蚁的移动方式与蚂蚁一样。注意狮蚁不能相互残食。
*繁殖。如果狮蚁存活了8个时间步,在第八个时间步结束后它将生下一只新狮蚁,生殖方式与蚂蚁一样。
*饿死。如果一只狮蚁在3个时间步里没有吃到蚂蚁,在3个时间步结束后将被饿死。死去的狮蚁将在网格里剔除。每一轮移动中狮蚁都先于蚂蚁移动。
编程要求:
用C++实现这一模拟,并使用ASCII字符O来表示蚂蚁,X表示狮蚁。绘制网格世界。创建Organism类来封装蚂蚁和狮蚁的共用数据。这个类应该包含一个名为move()的虚拟函数。此函数是在派生类Ant和Doodlebug中定义的。你可能需要另外的数据结构来跟踪哪些生物已经移动了。
用5只蚂蚁和100只狮蚁来初始化这个世界。在每一个时间步后,提示用户回车进行下一个时间步。