C++编程题生态系统.docx
- 文档编号:9233454
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:10
- 大小:16.57KB
C++编程题生态系统.docx
《C++编程题生态系统.docx》由会员分享,可在线阅读,更多相关《C++编程题生态系统.docx(10页珍藏版)》请在冰豆网上搜索。
C++编程题生态系统
院系:
计算机学院
实验课程:
计算机基础实验
实验项目:
简单生态系统仿真实验
指导老师:
杨志强
开课时间:
2012〜2013年度第2学期
专业:
计算机科学与技术
班级:
12级1班
学生:
杨丹
42
华南师范大学教务处
一、题目
1、实验内容:
设计和开发一个简单的生态系统仿真软件
2、实验要求:
按照综合设计实验的格式要求撰写本实验的实验报告;
代码规范、注释简洁清晰;
独立完成代码的编写和调试以及实验报告的撰写;
二、中文摘要
在代码的基础上进行完善或者重写,修改完善各类生物物种的现有规则;尝试着添加新的物种,并定义相应的规则;通过不断的重构来完善系统的设计和实现,在改进中体会如何权衡各种因素,通过合理有效的面向对象设计和实现,带来代码复用、隔离变化、增加扩展性等方面的好处。
通过本次综合开发,加深对面向对象概念的理解,提高软件设计和开发能力,培养自学能力和刻苦钻研的精神,增强独立思考的习惯和勇于创新的魄力。
三、关键词
生态系统、仿真模型、物种、生存规则、代码复用
四、前言
在了解供参考的仿真模型后,阅读供参考的代码,然后在代码的基础上进行完善或者重写,通过不断的重构来完善系统的设计和实现,在改进中体会如何权
衡各种因素,通过合理有效的面向对象设计和实现,带来代码复用、隔离变化、增加扩展性等方面的好处。
仿真模型和代码结构提倡按照自己的理解和能力进行自由发挥,使得仿真模型更合理、显示方式更直观、配置更方便、扩展更容易、可维护性更好。
通过本次综合开发,加深对面向对象概念的理解,提高软件设计和开发能力,培养自学能力和刻苦钻研的精神,增强独立思考的习惯和勇于创新的魄力。
五、软件的开发过程
1、添加物种:
狼
(1)添加cpp文件,狮子的更新以及生存条件:
#include""
#include""
StateLionUnit:
:
getState()
{
returnLION;
}
StateLionUnit:
:
nextState()
{
age++;
round();
if(sum[LION]>TMLION)
{
returnEMPTY;
else
{
if(age>DLION)
{
returnEMPTY;
}
else
{
returnLION;
}
}
}
voidLionUnit:
:
round()
{world->sums(pos,sum);
}
(2)添加头文件:
//
#include""
classLionUnit:
publicLivingUnit
{
public:
LionUnit(World*w,intr,intc,inta=0):
age(a)
{
=r;
=c;
world=w;
StategetState();
StatenextState();
voidround();
protected:
intage;
};
(3)狮子的世界类型:
voidWorld:
:
worldOfLion()
{
srand(unsigned(time(0)));
for(inti=2;i for(intj=2;j { intrandom仁1+(5-1)*rand()/(RAND_MAX+; switch(random1) { case1: (*curMap)[i][j]=LION;break; case2: (*curMap)[i][j]=FOX;break; case3: (*curMap)[i][j]=RABBIT;break; default: (*curMap)[i][j]=GRASS;break; } (4)枚举类型中添加const成员 (5)对狮子的输出控制 2、对其它物种的生存条件的修改 草: StateGrassUnit: : nextState() { round(); if(sum[GRASS]>sum[RABBIT]||sum[EMPTY]>0) { returnGRASS; } else { returnEMPTY; } } 兔子: StateRabbitUnit: : nextState() { round(); if (sum[FOX]>sum[RABBIT]||sum[LION]>sum[RABBIT]||sum[FOX]+sum[LION]>sum[RABBIT]) { returnEMPTY; } else { if(++age>DRAB) {returnEMPTY;} else { returnRABBIT; } } 狐狸: StateFoxUnit: : nextState() { age++; round(); if(sum[LION]>sum[FOX]){returnEMPTY;} else { if(sum[FOX]>TMFOX) { returnEMPTY; } else { if(age>DFOX) { returnEMPTY; } else { returnFOX; } } } } 3、其它世界的布局 草: voidWorld: : worldOfGrass() { srand(unsigned(time(0))); for(inti=2;i for(intj=2;j intrandom1=1+(11-1)*rand()/(RAND_MAX+; switch(randoml){ case1: (*curMap)[i][j]=LION;break; case2: case3: (*curMap)[i][j]=FOX;break; case4: case5: case6: (*curMap)[i][j]=RABBIT;break; default: (*curMap)[i][j]=GRASS;break; } } } 兔子: StateRabbitUnit: : nextState() { round(); if (sum[FOX]>sum[RABBIT]||sum[LION]>sum[RABBIT]||sum[FOX]+sum[LION]>sum[RABBIT] ) returnEMPTY; else { if(++age>DRAB) {returnEMPTY;} else { returnRABBIT; } } } 狐狸: StateFoxUnit: : nextState() { age++; round(); if(sum[LION]>sum[FOX]) {returnEMPTY;} else if(sum[FOX]>TMFOX) { returnEMPTY; } else { if(age>DFOX) { returnEMPTY; } else { returnFOX; } } } } 4、对主函数的修改 〃一个简单的生态仿真系统 #include #include"" intmain() { intwo; cout<<"(1: WORLD_OF_GRASS,2: WORLD_OF_RABBIT,3: WORLD_OF_FOX, 4: WORLD_OF_LION)"< "; cin>>wo; switch(wo) { case1: wo=WORLD_OF_GRASS;break; case2: wo=WORLD_OF_RABBIT;break; case3: wo=WORLD_OF_FOX;break; default: wo=WORLD_OF_LION;break; } Worldworld(wo); Scenescene(world); (); return1; }六、系统测试情况 七、系统的优点与不足 可以选择 优点: 能模拟不同类型世界的演变过程,且不会造成生态系统的崩溃。 不同的世界,随用户自由选择。 物种的生成可随机分配。 缺点: 模拟不同的世界类型不够仿真,动物无法自然老死。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 编程 生态系统