《计算机基础实验课程》综合实验报告简单生态系统仿真_第1页
《计算机基础实验课程》综合实验报告简单生态系统仿真_第2页
《计算机基础实验课程》综合实验报告简单生态系统仿真_第3页
《计算机基础实验课程》综合实验报告简单生态系统仿真_第4页
《计算机基础实验课程》综合实验报告简单生态系统仿真_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

院 系:计算机学院实验课程:计算机基础实验课程实验项目:简单生态系统仿真软件指导老师:XXX开课时间:XXXX〜XXXX年度第2学期专业:XXXX班级:XXXX级本X班学生:XXX学号:XXXXXXX设计和开发一个简单的生态系统仿真软件二、 中文摘要:简单生态系统是指环境与生物之间相互关系的一个动态系统。在这个系统中,每种生物都有自己的发展形态,各种生物相互作用之后,使系统处于动态发展之中,最终达到平衡状态。现在可以用面向对象程序设计来设计一个简单生态系统,实现该动态过程。环境、生物分别用不同的类进行设计,各种生物的发展规律由各生物类中的函数来实现。通过对此简单生态系统的设计,使自己加深对面向对象程序设计的认识和实践操作能力。三、 关键词:简单生态系统面向对象程序设计类与对象C卄四、 前言:(一) 实验目的:通过本次综合开发,加深对面向对象概念的理解,提高软件设计和开发能力,培养自学能力和刻苦钻研的精神,增强独立思考的习惯和勇于创新的魄力。(二) 实验任务:在了解供参考的仿真模型后,阅读供参考的代码,然后在代码的基础上进行完善或者重写,默认采用控制台的彩色显示方式(参考代码的basic.h中有相关的实现代码),也可以考虑用图形用户界面(GUI)的方式显示。修改完善各类生物物种的现有规则;尝试着添加新的物种,并定义相应的规则;通过不断的重构来完善系统的设讣和实现,在改进中体会如何权衡各种因素,通过合理有效的面向对象设计和实现,带来代码复用、隔离变化、#增加扩展性等方面的好处。仿真模型和代码结构提倡按照自己的理解和能力进行自山发挥,使得仿真模型更合理、显示方式更直观、配置更方便、扩展更容易、可维护性更好。(三) 实验要求:按照综合设计实验的格式要求撰写本实验的实验报告;代码规范、注释简洁清晰;独立完成代码的编写和调试以及实验报告的撰写;(四) 供参考的仿真模型介绍:将作为我们研究对象的生态系统的世界地图分为若干个方格,比如说40*40。假设本生态系统中存在一种植物(青草),两种动物(兔子和狐狸)。每个方格根据上面是否生存有生物,相应地分为空白、有青草、有兔子、有狐狸。初始时,按照某种预设的生物分布对方格进行配置,形成初始的生态系统状态。每次仿真循环时,对于每个给定的方格,计算周圉邻居中不同生命物种的数量,再决定哪种生物将继续生存下去,注意周围邻居要包括当前的方格本身。随着仿真的推进,生态系统根据预设的生物生存规律和其它限制条件而变化。在若干仿真周期后,形成了不同的生态系统状态。假设的生物生存规律和限制条件为:青草:如果在相邻区域有比兔子能吃到的更多的草存在,则草存留下来,否则,草被吃光。兔子:如果兔子的年龄超过DRAB的限制,则兔子会老死;如果兔子附近有适当数量的狐狸,它们将被狐狸吃掉。狐狸:狐狸会死于过度拥挤或者年老。(五) 供参考的代码介绍:程序类层次框架:用面向对象的方式设计了主体框架,其中包含3个主要的类,场景类Scene.世界类World、生物类LivingUnit,然后从生物类派生出4个类,空白方格单元类EmptyUnit>有青草的方格单元类GrassUnit、有兔子的方格单元类RabbitUnit.有狐狸的方格单元类FoxUnito各类的主要功能分别介绍如下:场景类Scene主要包含下列公有函数:voidupdate(); 〃更新场景voiddisplayO; 〃显示当前的场景voidrun(); 〃场景运行世界类World主要包含下列公有函数:voidupdate(); 〃更新世界voiddisplayO; 〃显示世界voidsums(Positionpos,intsum[STATES]);//指定位置周围的各类生物的〃总数的列表,返回结果保存在〃数组intsum[STATES]中以及5个供内部调用的私有函数:voidinitWorldO; 〃初始化世界,默认全空voidworldOfGrass(); 〃配置青草的世界voidworldOfRabbit();〃配置兔子的世界voidworldOfFox(); 〃配置狐狸的世界LivingUnit*locate(introw,intcolum);//根据指定位置返回指向存在于〃该位置的对象的指针此外,有1个私有属性:Map*curMap;〃当前的世界地图生物类LivingUnit该类为抽象基类,包含了3个纯虚函数,需要派生类去实现:virtualStategetState()=O; 〃获取生物所在位置的当前仿真时刻状态virtualStatenextState()=O;〃该单元下一个仿真时刻的状态virtualvoidround()=0; 〃周围态势,得到各类主物数訂统讣还有3个私有属性Positionpos; 〃所在的位置WorldWorld; 〃所在的世界intsum[STATES]; 〃所在位置附近的各类生物数U统计程序运行方式:仿真开始时,按照内置的某种世界创建世界类World的一个对象,然后创建场景类Scene的一个对象用来加载,然后在仿真周期内,场景类Scene的对象循环运行,完成仿真任务。五、软件的开发过程:本程序在原有的基础上添加了一个新的生物一一Human,并对该程序中部分类的功能做了修改,开发过程如下:(一)添加新物种Human添加头文件human,h;在human,h中添加如下内容,定义一个新的类HumanUnito#indude"living.h"classHumanUnitpublicLivingUnitpublic:HumanUnitfWorld*w,intrintc,inta=0)pos.row=r;pos.colum=c;world=w;}StategetStateO;StatenextState0;voidroundO;protected:intage;};添加cpp文件human,cpp;实现HumanUnit的功能。#include"human.h"#include”emptyh”StateHumanUnit:getStateQreturnHUMAN;StateHumanUnit::nextState0{roundO;if[sum[HUMAN]>TMHUM){returnEMPTY;}elseif(age>DHUM){returnEMPTY;}elseif(sum[RABBIT]==O&&sum[FOX]==0&&sum[GRASS]==0){returnEMPTY;}else{returnHUMAN;}}voidHumanUnit:roundO{world->sums(possum);}在basic,h中的枚举类型State中添加HUMAN,添加人类的寿命DHUM=5,太多的人类数为THHUM=2o在world,h中添加classHumanUnit;在枚举类型Simworld中添加WORLD_OFJIUMAN;在World中添加空型类函数WorldofHuman()。在world,cpp中编入worldofHuman的世界初始化的代码;在world的构造函数中修改switch,如下:caseWORLD_OF_HUMAN:worldOfHumanO;break;在display函数中添加颜色的显示,人类单元为蓝色单元格。在empty,cpp中StateEmptyUnit::nextState()添加以下代码:if(sum[HUMAN]>l){returnHUMAN;}(二)修改原来存有的代码,增加其功能修改grass的类函数:StateGrassUnit:nextStateO{round0;if(sum[GRASS]>(sum[RABBIT]+sum[HUMAN])){returnGRASS;}else{returnEMPTY;}}修改rabbit的类函数:StateRabbitUnit:nextState0{round0;if(sum[RABBIT]>(sum[FOX]+sum[HUMAN])){returnRABBIT;}elseif(age>DRAB){returnEMPTY;}elseiffsum[GRASS]==0){returnEMPTY;}else{returnEMPTY;}}修改fox的类函数:StateFoxUnit:nextState0{round0;if(sum[HUMAN]>sum[FOX]){returnEMPTY;}elseif(sum[FOX]>TMFOX){returnEMPTY;}else{if(age>DFOX){returnEMPTY;}elseif(sum[RABBIT]==0){returnEMPTY;}else{returnFOX;}}}在world,cpp中修改WORLD_OF_GRASSWORLD_OF_RABBITW0RLD_0F_F0X和添加WORLD_OF_HUMAN,使之都形如下列代码:for(inti=2;i<N-2;++i)for(intj=2;j<N-2;++j){if((i+j)%7==0){(*curMap)[i][j]=RABBIT;}else(*curMap)[i][j]=FOX;else{if[(i+j)%7==2){(*curMap)[i][j]=HUMAN;}else{(*curMap)[i][j]=GRASS;}六、系统测试情况:一一Gras:s:-Rabbit-Fox~H«man 00000000000000000000000000000000000000000000000000000000000000000000000000000000&&ZQZQ2 8 .2 800001200200200280000012002002002808000;1200200200200890■2 00 2 00 2 00 2 80 02002002002000200200200200002 09 2 09 2 00 2 000020020022002002002000200200200200002 09 2 09 2 00 2 0000200200200200020020020011200000200200200000 2 00 2 00 2 002j00020020020020009302 00i200 2 00 2 000299 2 00i200 2 00 2 000299 200 200 200002 99 2 99 2 00 2 0000209 29911200 200 02001111200200200000120011200 200 00020020020021009 2 00 2 00 2 00 20003090909000900302 00i2 00 2 00 2 0002 00 2 00i2 00 2 00 2 0002 00 2 00 2 00L20000112 0011112 00 12 00i.i20000290 290 丄290 280 898000000TOC\o"1-5"\h\z002 00 12 90 2 80 2 00 8002 90 2 90 12 00 2 80 00000-2901200丄200.200000200200200i2000030 2 00 2 00 2 80 2 08000000000000000000000000in00000005151515151515155T5I5000000.51511112111121111211112iS0000000000008000200280200830001L200:i2(80000000200l20000200200280200111120011200i1211120011200!i2112001120011200000000200290000l2092301111290;l239001112112300303033'51500;12002002002001i200000000112800000:i20011200112001i200J2091;2001I20011200112111121112112002909000011200112000000!1200!120080000112001120011200001i200112001A200!1200112001L210001120011200:12001120011200000000000000002000120000200000000030000000000003000000000000000000000000000008000IH00000000000000000000000000000000000000000000000000000000000000000000000000000000H0j1 12 0 2 0111:.2 8 ,2 000L111200.112091111200-20000L1120002000111200020000090L12000020000120000L200000TOC\o"1-5"\h\z001200002000020000200000002 0009 2 0000 2 0008 2 0000 0&&000020000200082000020QQ&QQ92 0000 2 0008 2 0008 200QQQQ&Q2 0000 2 0000 2 0000 2 0080> 2 000012 0900 2 0000 2 00000 2QQQ92 00001i2 0000 2 000000 2 0000 2&QQQ2 0000 2 0000000J2 0000 2 0000 2 0000 2 000000002&9QQ2 0000 2 0000 2 0000 8002 0000 2 0009 2 0000 2 0000 00& 0000 2 0009 2 0000 2 0000 20000000200002000020000200000000 2 0003 2 0000 2 0000 2 0000120000200002000020000OJ2 0003 2 0000 2 0000 2 000000 \2 9999 2 9999 2 0000 2 0000009 2 0999 2 0989 2 0000 2 00000000J.2 0999 2 9999 2 0000 2 0008 0002 9909 2 0909 2 0000!2 0000 009 0999 2 0009 2 0000 2 0000 20000009 2 0009 2 0000 2 0000 200099099 2S909 200002000020009A11120999 2000020000200000.1112:000020000120000120000TOC\o"1-5"\h\z00 2 0900 2 0000 2 0000 2 00000002000020000120000200000000.2 0000 2 0009 2 0000 2 0000 0002 0000.2 0000一2 0090 2 0000 8000000.20000_280002800020000000 2 9000.2 0008.2 8000-2009000002000020000.20008.200QQQ&QQQQQQQ0000000000000008000000000000300000000000000000000000000000000300000 00000002J0002000020000>00200200200;0000002002002R9:1000230002002002002103020020020020003020020920020000020020028112002002002030111200200200209928020020020330802002002002003000280200200200002002002002J00020020020000020020020000020020020!128020020020111280200200200002802002002030980200200200200000020020020028000802002002002J000200200200800902030000000000000000000000000000000000000003000009000000090000000000000000000000000(5l5>5<55EEin0000Y00000000000000000002000000020000000200000000L1U1202011111202000Lilian11112111121111200L1120L20L2QL20L120.20L20L2002002002002000090000000000000000000000000000000000000010009090000090900000900000000000000000000111120111112011111201111120002002002002000012 0090 2 0999 2 0000 2 000002 0909912 0099912 000002 0000002 0909002 0090902 0000002 00000005155T55155T5002 0999092 0990992 0000002 000000009 0999992 0099092 0000002 0000002011121121220000002■51515I5I5I5B頃fcisBiysiggr0000002GEEEEhfa000000200000020000000002000000200000000002000000200000200000020000002000000000000200000020000000000000200000020000000000000200000020000002^00000002000000200000000200000020000000020000002000GEEEEhfa00200000020000002000032 0000002 0000002 00000200000020800002080000000000200000028000000000000200000020000000观0002 8008002 008000200000020080002800000200000003002 0000002 0000002 0000002 800000000 0000000 0308000 8000000 80000000000030000000300000000000000000000000irr

5T510090090990009900990000000000000000000000111120111112011111201111120005T5WA200200200200002 0099 2 0999 2 0000112 00000WA2 09999L200909i2 000002 0000001002 0090092 0000002 0000002 0000000002 0000002 0000092 00

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论