c++迷宮游戲?qū)嶒?yàn)報(bào)告_第1頁
c++迷宮游戲?qū)嶒?yàn)報(bào)告_第2頁
c++迷宮游戲?qū)嶒?yàn)報(bào)告_第3頁
c++迷宮游戲?qū)嶒?yàn)報(bào)告_第4頁
c++迷宮游戲?qū)嶒?yàn)報(bào)告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1、問題描述程序開始運(yùn)行時(shí)顯示一個(gè)迷宮地圖,迷宮中央有一只老鼠,迷宮的右下方有一個(gè)糧倉。游戲的任務(wù)是使用鍵盤上的方向健操縱老鼠在規(guī)定的時(shí)間內(nèi)走到糧倉處?;疽螅海?) 老鼠形象可以辨認(rèn),可用鍵盤操縱老鼠上下左右移動;(2) 迷宮的墻足夠結(jié)實(shí),老鼠不能穿墻而過;(3) 正確檢測結(jié)果,若老鼠在規(guī)定時(shí)間內(nèi)走到糧倉處,提示成功,并給出一條路徑,否則提示失敗。提高要求:(1) 添加編輯迷宮功能,可修改當(dāng)前迷宮,修改內(nèi)容:墻變路、路變墻;(2) 增加闖關(guān)和計(jì)分功能;(3) 找出走出迷宮的所有路徑,以及最短路徑。 2需求分析軟件的基本功能:通過鍵盤控制光標(biāo)移動實(shí)現(xiàn)老鼠在迷宮中的行走、全部路徑和最短路徑的顯

2、示、自定義地圖(墻變路,路變墻)。在老鼠闖關(guān)只能在地圖顯示是路的地方行走,不能穿墻,有計(jì)時(shí)功能,當(dāng)時(shí)間結(jié)束時(shí)若沒有到達(dá)指定地點(diǎn),顯示game over,查看排行榜,游戲結(jié)束,若成功到達(dá)指定位置,進(jìn)去下一關(guān),直到所有關(guān)結(jié)束,程序結(jié)束;。輸入/輸出形式:用戶可以通過控制臺,根據(jù)輸入提示。輸入形式: 方向鍵、空格鍵、enter鍵輸出形式: 輸出地圖菜單。 輸出地圖 輸出是否成功信息、輸出排行榜 3概要設(shè)計(jì)(1)主程序流程圖1:主程序流程圖(3)模塊調(diào)用關(guān)系:本程序中函數(shù)包括:main函數(shù),menu函數(shù),menu2函數(shù),mouse類內(nèi)函數(shù),path類內(nèi)函數(shù),change函數(shù), 函數(shù)調(diào)用關(guān)系如下:圖2:

3、函數(shù)調(diào)用關(guān)系4詳細(xì)設(shè)計(jì)(1)實(shí)現(xiàn)概要設(shè)計(jì)的數(shù)據(jù)類型:Mouse類class mouseprivate:int m_x;int m_y;time_t begin ,stop;public:int move_up(int mapxy,int end);/向上移動int move_down(int mapxy,int end);/向下移動int move_left(int mapxy,int end);/左int move_right(int mapxy,int end);/右void initialize(int mapxy,int end)m_x=S;m_y=S;mapendend=9; voi

4、d print(int mapxy,int end);/打印地圖void operate(int mapxy,int end,char name30);/操作void success(); void charts(char Name30);/排行榜;Path類class Pathpublic:Path()pa=1000;void path(int i,int j,int mapxy,int &t,int end);int check(int i, int j, int d, int mapxy,int end);void Print2(int mapxy, int &t,int

5、 end);/打印每條路徑void allpath(int s,int e,int mapxy,int &t,int end);private:int pa;(2)主程序以及其它模塊的算法描述:主函數(shù)具體代碼:int main()menu();file(1);v:if(menu2(1,11)=1)/1,返回當(dāng)前關(guān)卡菜單,0,進(jìn)入下一關(guān)卡goto v;v2:file(2);if(menu2(2,12)=1)goto v2;v3:file(3);if(menu2(3,13)=1)goto v3;v4:file(4);if(menu2(4,15)=1)goto v4;v5:file(5);i

6、f(menu2(5,18)=1)goto v5;final();return 0;Menu2 函數(shù)具體代碼int menu2(int t,int e)mouse mickey;Path path;int p=0;system("cls");Loc1(15,3);cout<<""<<Name;Loc1(15,5);cout<<"第"<<t<<"關(guān)"<<endl;cout<<endl;a();/菜單初始狀態(tài)char k;int sel=

7、1;/選中第一項(xiàng)while(1)k=getch();/移動上下方向鍵switch(k)case 72:/上移if(sel>1)sel-;if(sel=1)a();else if(sel=2)b();else if(sel=3)c();else if(sel=4)d();else if(sel=5)menue();break;case 80:/下移if(sel<6)sel+;if(sel=1)a();else if(sel=2)b();else if(sel=3)c();else if(sel=4)d();else if(sel=5)menue();break;case 13:/回車

8、確定選擇if(sel=1)/開始闖關(guān)mickey.operate(MAP,e,Name);return 0;else if(sel=2)/查看所有路徑和最短路徑system("cls");path.allpath(9,9,MAP,p,e);return 1;else if(sel=3)/更改地圖change(2*(18-e),18-e,e);return 1;else if(sel=4)/查看排名mickey.charts(Name);return 1;else if(sel=5)/退出exit(0);這個(gè)函數(shù)主要調(diào)用了各實(shí)現(xiàn)功能函數(shù)。其步驟為:用戶進(jìn)入菜單選項(xiàng),方向鍵控制

9、選中選項(xiàng)移動,enter進(jìn)入選中選項(xiàng)。(3)其它模塊的算法描述 控制老鼠移動函數(shù)功能:方向鍵移動老鼠。(上方向鍵進(jìn)入Move_up函數(shù))if(mapm_x-1m_y=1)return 0;else if(mapm_x-1m_y=9)mapm_xm_y=0;m_x-;mapm_xm_y=3;return -1;elsemapm_xm_y=0;Y=-1;X=0;Loc(2*m_y,m_x);cout<<" "Loc(2*m_y+X,m_x+Y);cout<<""m_x-;mapm_xm_y=3; 求全部路徑功能:輸出迷宮所有路徑int

10、 dir42=-1,0,1,0,0,-1,0, 1;/上下左右int d,tx,ty,p;for(d=0;d<4;d+)if(check(i,j,d,map,end)=1)/檢查是否可以走tx=i+dird0;ty=j+dird1;p=maptxty;/記錄狀態(tài)maptxty=4;/標(biāo)記路徑mapendend=0;if(tx=end&&ty=end)/終點(diǎn)t+ ;/路徑條數(shù)加一Print2(map,t,end);/終點(diǎn)elsepath(tx,ty,map,t,end);maptxty=p;更改地圖功能char key;Loc2(sx,sy);while(1)key=get

11、ch();switch(key)case 72:Loc2(sx,-sy);break;case 80:Loc2(sx,sy+);break;case 75:Loc2(sx-=2,sy);break;case 77:Loc2(sx+=2,sy);break;case 32:if(MAPsysx/2=1)MAPsysx/2=0;Loc1(sx,sy);cout<<" "Loc1(sx,sy);else if(MAPsysx/2=0)MAPsysx/2=1;Loc1(sx,sy);cout<<""Loc1(sx,sy);break;ca

12、se 13:return ;default:break;5、編碼與調(diào)試分析1編碼與調(diào)試過程中遇到的問題及解決辦法:【問題一】通過清屏打印地圖實(shí)現(xiàn)老鼠移動,屏幕閃爍嚴(yán)重解決辦法:分析得知,通過移動光標(biāo)打印老鼠位置,可以解決屏閃問題解決此問題的核心代碼:COORD pos = a,b;HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(hOut, pos);2.待解決問題:時(shí)間不能實(shí)現(xiàn)連續(xù)變化3、使用說明進(jìn)入菜單,根據(jù)提示進(jìn)行選擇:方向鍵選擇,enter鍵進(jìn)入4、測試結(jié)果(1)進(jìn)入頁面(2) 菜單頁面(3)闖

13、關(guān)(4)打印路徑 (5)自定義地圖 (6)查看排行榜 8、自學(xué)知識在課程設(shè)計(jì)過程中,特別是在代碼編寫和調(diào)試的過程中,自學(xué)了很多新的知識。例如Loc()函數(shù),包含于表頭文件 #include <window.h> 。 其功能是: 移動光標(biāo)位置,更改控制臺輸出顏色。還有一個(gè)知識點(diǎn)是清屏函數(shù),它也是包含于<stdlib.h>頭文件中的, 使用形式為system("CLS")。主要功能就是清空屏幕。9、課程設(shè)計(jì)心得體會課程設(shè)計(jì)是一次可以讓我們所學(xué)的理論與實(shí)際相結(jié)合的機(jī)會。我們選擇了迷宮游戲這一題目。我這次的程序準(zhǔn)確來說還算不上一個(gè)游戲,剛開始想要自學(xué)MFC因?yàn)闀r(shí)間原因沒有實(shí)現(xiàn),這是一個(gè)遺憾。但學(xué)習(xí)不會隨著

溫馨提示

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

評論

0/150

提交評論