




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
院 系:計算機學院實驗課程:計算機基礎實驗課程實驗項目:簡單生態(tài)系統仿真軟件指導老師:XXX開課時間:XXXX?XXXX年度第2學期專業(yè):XXXX班級:XXXX級本X班學生:XXX學號:XXXXXXX設計和開發(fā)一個簡單的生態(tài)系統仿真軟件二、 中文摘要:簡單生態(tài)系統是指環(huán)境與生物之間相互關系的一個動態(tài)系統。在這個系統中,每種生物都有自己的發(fā)展形態(tài),各種生物相互作用之后,使系統處于動態(tài)發(fā)展之中,最終達到平衡狀態(tài)?,F在可以用面向對象程序設計來設計一個簡單生態(tài)系統,實現該動態(tài)過程。環(huán)境、生物分別用不同的類進行設計,各種生物的發(fā)展規(guī)律由各生物類中的函數來實現。通過對此簡單生態(tài)系統的設計,使自己加深對面向對象程序設計的認識和實踐操作能力。三、 關鍵詞:簡單生態(tài)系統面向對象程序設計類與對象C卄四、 前言:(一) 實驗目的:通過本次綜合開發(fā),加深對面向對象概念的理解,提高軟件設計和開發(fā)能力,培養(yǎng)自學能力和刻苦鉆研的精神,增強獨立思考的習慣和勇于創(chuàng)新的魄力。(二) 實驗任務:在了解供參考的仿真模型后,閱讀供參考的代碼,然后在代碼的基礎上進行完善或者重寫,默認采用控制臺的彩色顯示方式(參考代碼的basic.h中有相關的實現代碼),也可以考慮用圖形用戶界面(GUI)的方式顯示。修改完善各類生物物種的現有規(guī)則;嘗試著添加新的物種,并定義相應的規(guī)則;通過不斷的重構來完善系統的設訃和實現,在改進中體會如何權衡各種因素,通過合理有效的面向對象設計和實現,帶來代碼復用、隔離變化、#增加擴展性等方面的好處。仿真模型和代碼結構提倡按照自己的理解和能力進行自山發(fā)揮,使得仿真模型更合理、顯示方式更直觀、配置更方便、擴展更容易、可維護性更好。(三) 實驗要求:按照綜合設計實驗的格式要求撰寫本實驗的實驗報告;代碼規(guī)范、注釋簡潔清晰;獨立完成代碼的編寫和調試以及實驗報告的撰寫;(四) 供參考的仿真模型介紹:將作為我們研究對象的生態(tài)系統的世界地圖分為若干個方格,比如說40*40。假設本生態(tài)系統中存在一種植物(青草),兩種動物(兔子和狐貍)。每個方格根據上面是否生存有生物,相應地分為空白、有青草、有兔子、有狐貍。初始時,按照某種預設的生物分布對方格進行配置,形成初始的生態(tài)系統狀態(tài)。每次仿真循環(huán)時,對于每個給定的方格,計算周圉鄰居中不同生命物種的數量,再決定哪種生物將繼續(xù)生存下去,注意周圍鄰居要包括當前的方格本身。隨著仿真的推進,生態(tài)系統根據預設的生物生存規(guī)律和其它限制條件而變化。在若干仿真周期后,形成了不同的生態(tài)系統狀態(tài)。假設的生物生存規(guī)律和限制條件為:青草:如果在相鄰區(qū)域有比兔子能吃到的更多的草存在,則草存留下來,否則,草被吃光。兔子:如果兔子的年齡超過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; 〃獲取生物所在位置的當前仿真時刻狀態(tài)virtualStatenextState()=O;〃該單元下一個仿真時刻的狀態(tài)virtualvoidround()=0; 〃周圍態(tài)勢,得到各類主物數訂統訃還有3個私有屬性Positionpos; 〃所在的位置WorldWorld; 〃所在的世界intsum[STATES]; 〃所在位置附近的各類生物數U統計程序運行方式:仿真開始時,按照內置的某種世界創(chuàng)建世界類World的一個對象,然后創(chuàng)建場景類Scene的一個對象用來加載,然后在仿真周期內,場景類Scene的對象循環(huán)運行,完成仿真任務。五、軟件的開發(fā)過程:本程序在原有的基礎上添加了一個新的生物一一Human,并對該程序中部分類的功能做了修改,開發(fā)過程如下:(一)添加新物種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. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軍船修理 外包 合同范例
- 事業(yè)單位職工請假合同范例
- 產權轉讓合同范例
- 2025年印前處理設備:照排機合作協議書
- 駕校合作協議書范本
- 混凝土委托加工合同
- 別墅裝飾設計合同
- 地下車位使用權轉讓協議書范本
- 施工項目冬季施工方案與責任分工指南
- 二零二五年度高空作業(yè)搬運工安全勞動合同
- 2025年公園綠化樹木維護合同
- 2023年高考真題全國乙卷物理試卷
- 運梁車培訓教材
- 節(jié)后復工復產安全教育培訓資料
- 軸承基礎知識測試
- 《體驗微視頻拍攝樂趣》第一課時初中七年級勞動教育課件
- 主水管改造合同范例
- 《電工技術》課件-戴維南定理
- 力與運動的關系(專題訓練)【三大題型】(原卷版)-八年級物理下冊
- DB4205T70-2024 既有住宅加裝電梯技術規(guī)范
- 耳穴壓豆治療便秘
評論
0/150
提交評論