C++程序迷宮游戲設(shè)計(jì)報(bào)告_第1頁
C++程序迷宮游戲設(shè)計(jì)報(bào)告_第2頁
C++程序迷宮游戲設(shè)計(jì)報(bào)告_第3頁
C++程序迷宮游戲設(shè)計(jì)報(bào)告_第4頁
C++程序迷宮游戲設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、C+程序迷宮游戲設(shè)計(jì)報(bào)告信息科學(xué)與技術(shù)學(xué)院專業(yè):電子信息工程班級(jí):2班姓名:張喜學(xué)號(hào):2011508217指導(dǎo)教師:高攀1、設(shè)計(jì)題目32、設(shè)計(jì)要求33、總體設(shè)計(jì)33.1系統(tǒng)功能框架33. 2系統(tǒng)功能說明44、詳細(xì)設(shè)計(jì)44.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)44. 2系統(tǒng)模塊設(shè)計(jì)45、運(yùn)行結(jié)果56、課程設(shè)計(jì)總結(jié)67、參考文獻(xiàn)61、設(shè)計(jì)題目迷宮游戲設(shè)計(jì)。2、設(shè)計(jì)要求編一個(gè)迷宮游戲程序,迷宮生成有用戶輸入和程序自動(dòng)生成兩種方式 (迷宮以矩陣表示),要求輸出迷宮和走出迷宮的路徑。3、總體設(shè)計(jì)3.1系統(tǒng)功能框架3.2系統(tǒng)功能說明在迷宮問題中,可由操作者自己設(shè)定迷宮大小,迷宮內(nèi)部構(gòu)造有兩個(gè)選擇,系統(tǒng)設(shè) 計(jì),節(jié)省時(shí)間,也可由操

2、作者自己設(shè)計(jì),迷宮入口和出口并能保證入口為通路,若有路 徑會(huì)顯示其路徑并顯示最短路徑。一個(gè)迷宮有不同入口和出口,可尋求多條路徑。4. 詳細(xì)設(shè)計(jì)4.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)main17創(chuàng)建迷宮輸入其他入口出口尋找路徑恢復(fù)迷宮創(chuàng)is其他迷宮結(jié)束最短路徑4.2系統(tǒng)模塊設(shè)計(jì)迷宮中建立數(shù)組時(shí),首先輸入迷宮的行數(shù)和列數(shù)。邊圍規(guī)定為1,在程序中已賦值,內(nèi) 圉用0、1輸入,不用其他的數(shù)字,若輸入錯(cuò)誤會(huì)提示重新輸入;然后選擇系統(tǒng)創(chuàng)建的 迷宮還是自己創(chuàng)建迷宮,輸入選項(xiàng)1或2 (輸入其他選項(xiàng)按2處理);迷宮創(chuàng)建好后, 輸入入口和出口坐標(biāo)(入口必須為通路即0,否則系統(tǒng)會(huì)報(bào)錯(cuò),重新輸入),找到路徑 或無路徑;接下來會(huì)提示尋找其他

3、路徑還是退出此迷宮,輸入1或2進(jìn)行選擇;選擇1, 則繼續(xù)輸入迷宮入口和出口,選擇2或其他,則退出。若還想創(chuàng)建別的迷宮就在接下來 輸入y或Y,輸入其他則退出程序。迷宮數(shù)組定義為結(jié)構(gòu)體包含兩個(gè)整型數(shù)據(jù),迷 宮出口和入口的值定義為整型。5、運(yùn)行結(jié)果(1)自己創(chuàng)建迷宮(2)采用隨機(jī)迷宮D: vcvcMSDev98EinDebugBigong. exe歡迎到達(dá)迷宮界面請(qǐng)輸入迷宮的行數(shù)列數(shù)如n>3 41、采用創(chuàng)建好的迷宮;2、自己創(chuàng)建迷宮(其他輸入按,2,處理)|玆宮如下:1001111111情輸入迷宮入口<a,b),岀口<c,d)5 113 4 迷宮路徑為:<3,4><

4、;<2,3><<1.3><<1,2><<!,!><10001100111110111111最短路徑為:<3,4><<2,3><<1,1><丄、尋找耳他入口與岀口; 2、退岀此迷宮;1 情堿入透宮入口 <a,b>,出口 <c,d>: 113 1 謝術(shù)起,無法找到岀口.最短路徑為:<3 ?><一一(? ?><一一(1 1><一一1、尋堀価入口與由口; 2、退出此迷宮;1234 情輸入透宮入口 <a,b&

5、gt;,出口 <c,d>:6、課程設(shè)計(jì)總結(jié)為大家解決一些生活中實(shí)際的問題,在這個(gè)過程中,自身的能力也在不斷地提高。 此次程序設(shè)計(jì)綜合運(yùn)用所學(xué)知識(shí)解決實(shí)際問題,將課堂的書本知識(shí)有效的在程 序中體現(xiàn)出來,讓 學(xué)生更理解C+功能之強(qiáng)大,進(jìn)一步讓學(xué)生對(duì)面向?qū)ο蟮姆?法以及C卄的編程思想有較好的了解和認(rèn)識(shí)。此外,此次設(shè)計(jì)培養(yǎng)獨(dú)立開發(fā)、設(shè) 計(jì)、調(diào)試、運(yùn)行程序的能力,激發(fā)學(xué)生較 強(qiáng)的自學(xué)興趣,鍛煉學(xué)生之間以及學(xué) 生與老師的溝通能力,培養(yǎng)學(xué)生之間的合作精神,讓彼此更好的認(rèn)識(shí)到合作的 重要性,使學(xué)生在今后的學(xué)習(xí)中加強(qiáng)對(duì)合作精神的培養(yǎng)。一般來說,課程設(shè)計(jì)要 比教學(xué)實(shí)驗(yàn)復(fù)雜一些,涉及的深度深,而且更加實(shí)

6、用些。其目的是通過課程設(shè) 計(jì)的綜合訓(xùn)練,培養(yǎng)學(xué)生分析解決實(shí)際問題和編程等動(dòng)手能力,最終目標(biāo)是想 通過這種形式,幫助學(xué)生系統(tǒng)掌握C+這門課程的主要內(nèi)容,使老師更好的完成 教學(xué)任務(wù)。結(jié)合實(shí)際應(yīng)用的要求,使課程設(shè)計(jì)既覆蓋教學(xué)所要求的知識(shí)點(diǎn),乂 接近工程的實(shí)際需要,訓(xùn)練自己實(shí)際分析問題和解決問題以及編程的能力。通 過詳細(xì)的實(shí)例分析,循環(huán)漸進(jìn)的描述,啟發(fā)學(xué)生順利的完成設(shè)計(jì)。課程設(shè)計(jì)將設(shè) 計(jì)要求、需求分析、算法設(shè)計(jì)、編程和實(shí)例測試運(yùn)行分開,為學(xué)生創(chuàng)造分析問 題、獨(dú)立思考的條件。只要學(xué)生在吃透要求和算法的前提下,完全可以不按書 中提示的參考程序,自己設(shè)計(jì)出更具有特色的程序。7、參考文獻(xiàn)1譚浩強(qiáng),C卄程序設(shè)計(jì)

7、,北京,清華大學(xué)出版社,2006年.附錄:# include<iostream>#in clude<stack>#include<stdio.h>#include<time.h>#in clude<stri ng>using namespace std;typedef structint x,y;item;typedef structint x,y,d;JDatetype;typedef stack<Datetype> stack J nt;void path (int *maze,intintjntjnt);void p

8、rintpath();#define NUM 100 隊(duì)列大小;typedef structint x,y; 所到點(diǎn)的坐標(biāo);int pre; 前驅(qū)點(diǎn)的下標(biāo);SqType; 隊(duì)列;int front/ear; 隊(duì)首指針與隊(duì)尾指針;void printpath(SqType sqJnt)/打印路徑int i;i=rear;docout«,(,«sqi.x«,/,«sqi.y«,l)<-11;i=sqi.pre; /回溯;while(i!=-l);void restore(int *maze,int m,int n)恢復(fù)迷宮for(int i=

9、l;i<=m;i+)for(int j=l;j<=n;j+)if (mazeij=-l)mazeij=O;int pathl(int *maze,int m,int n,int cjnt d,int xl,int yl)最短路徑 m,n為迷宮的長和寬,c, d為迷宮入口坐標(biāo),xl, yl為迷宮出口坐標(biāo);maze 為迷宮;item move8=0,l/l,lLl,0/l,-l,0,-l,-l/-l/-l/0/-l/l; 坐標(biāo)增量數(shù)組:SqType sqNUM;int XMijv;fron t=rear=0;sqO.x=c;sqO.y=d;sqO.pre=-l;if(mazecd=O)

10、mazecd=-l;/An 點(diǎn)入隊(duì);else goto G;while(front<=rear) 隊(duì)列不為空x=sqfr on t.x;y=sq front .y;for(v=0;v<8;v+)i=x+movev.x;j=y+movev.y;if(mazeij=O) rear+;sqrear.x=i;sqrear.y=j;sqrear.pre=front;mazeij=-l; /訪問過的坐標(biāo)點(diǎn),入隊(duì);if(i=xl&&j=yl)cout«"最短路徑為:"«endl;printpath(sq,rear); 輸出路徑; resto

11、re(maze,m,n);恢復(fù)迷宮;return 1; /for v;fronts;當(dāng)前點(diǎn)搜索完,取下一個(gè)點(diǎn)搜索 /whileG:cout«"無路徑o H«endl;return 0;void path(int *maze,int a,int b,int m,int n)item move8=0,l/14Ll,0/l/-l,0/-lz-l,-lz-l/0/-l/l; stacknt st;Datetype temp;intif(mazeab=l)cout«"進(jìn) 口輸入有誤?!?return;temp.x=a;temp.y=b;temp.d=-l

12、; /初始化入口 點(diǎn)坐標(biāo)及方向;st.push(temp);while(!st.empty()temp=st.top();st.pop();x=temp.x;y=temp.y;d=temp.d+l;while(d<8)i=x+moved.x;j=y+moved.y;if(mazeij=O) /該點(diǎn)可到達(dá);temp.x=x;temp.y=y;temp.d=d; 坐標(biāo)及方向;st.push(temp);/坐標(biāo)及方向入棧;x=i;y=j;mazexy=-l;/ 到達(dá)新點(diǎn);if(x=m && y=n)cout«"迷宮路徑為:"«endl;c

13、out«,(l,«m«,l/,<< n«l,)<Datetype t;while(!st.empty()t=st.top();cout«,(,«t.x«,/,«t.y«,)<M;st.pop();輸出路徑;cout«endl;return ; 到達(dá) tB 口 ;else d=0;重新初始化方向;else d+;改變方向;cout«"M不起,無法找到岀口return;迷宮無路;void printpath()intstring s;cout«&

14、quot;請(qǐng)輸入迷宮的行數(shù)列數(shù)如:(m n)"«endl;cin»m»n;int *maze=new int*m+2;for(i=0;i<=m+l;i+)mazei=new intn+2;/申請(qǐng)迷宮的空間;for(i=0;i<=m+l;i+)mazeiO=l;for(i=0;i<=n+l;i+)mazeOi=l;for(i=0;i<=m+l;i+)mazein+l=l;for(i=0;i<=n+l;i+)mazem+li=l; 遂立迷宮周圍的墻;cout«"l.采用創(chuàng)建好的迷宮;2、自己創(chuàng)建迷宮(其他輸入

15、按2處理)-«endl; cin»s;if(s="l")srand(time(O); 系統(tǒng)時(shí)間隨機(jī)函數(shù):for(i=l;i<=m;i+)for(j=l;j<=n;j+)mazeij=rand()%2; 隨機(jī)賦值mazell=O; /(1,1)點(diǎn)為可通過點(diǎn);mazemn=O;/(m,n)點(diǎn)為可通過點(diǎn);else“vvendl;cout«"i#輸入迷宮:行列輸入必須為'0'或'1';for(i=l;i<=m;i+)輸入第i行迷宮的構(gòu)造;for(j=l;j<=n;j+)輸入第j列迷宮的結(jié)

16、構(gòu);cin»mazeij;A:if(mazeij!=0 && mazeij!=l)cout«'儲(chǔ)再次輸入:";cin»mazeij;goto A; 判錯(cuò);coutv謎宮如下:H«endl;/顯示用戶輸入的迷宮; for(i=0;i<=m+l;i+)for(j=0;j<=n+l;j+) cout«mazeij«, cout«e ndl;H:cout«"W輸入迷宮入口(a,b),出口(c,d): ”; cin»i»j»c»d;path(maze,i,j,c,d); 調(diào)用路徑函數(shù),輸出路徑; cout«endl; 格式設(shè)置;restore(maze,m,n);恢復(fù)迷宮;pathl(maze,m,n,i,j,c,d); 輸1* 最短路徑; cout«endl; 格式設(shè)置:cout«"l.尋找其他入口與岀口; 2、退出此迷宮;“; c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論