




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、實用1、問題描述 程序開始運行時顯示一個迷宮地圖,迷宮中央有一只老鼠,迷宮的右下方有一 個糧倉.游戲的任務是使用鍵盤上的方向健操縱老鼠在規(guī)定的時間內(nèi)走到糧倉處.根本要求:1老鼠形象可以識別,可用鍵盤操縱老鼠上下左右移動;2迷宮的墻足夠結實,老鼠不能穿墻而過;3正確檢測結果,假設老鼠在規(guī)定時間內(nèi)走到糧倉處,提示成功,并給出一條 路徑,否那么提示失敗.提升要求:1添加編輯迷宮功能,可修改當前迷宮,修改內(nèi)容:墻變路、路變墻;2增加闖關和計分功能;3找出走出迷宮的所有路徑,以及最短路徑.2需求分析 軟件的根本功能:通過鍵盤限制光標移動實現(xiàn)老鼠在迷宮中的行走、全部路徑 和最短路徑的顯示、自定義地圖墻變路
2、,路變墻 .在老鼠闖關只能在地圖顯示是 路的地方行走,不能穿墻,有計時功能,當時間結束時假設沒有到達指定地點,顯示 game over,查看排行榜,游戲結束,假設成功到達指定位置,進去下一關,直到所有 關結束,程序結束; .輸入 /輸出形式:用戶可以通過限制臺,根據(jù)輸入提示.輸入形式: 方向鍵、空格鍵、 enter 鍵輸出形式: 輸出地圖菜單. 輸出地圖 輸出是否成功信息、輸出排行榜3概要設計1主程序流程開始闖關查C路徑口定義地再查看排行榜游戲結束(3)模塊調(diào)用關系:本程序中函數(shù)包括: main函數(shù),menu函數(shù),menu2函數(shù),mouse類內(nèi)函數(shù),path類內(nèi)函數(shù),change函數(shù),函數(shù)調(diào)用
3、關系如下:圖2:函數(shù)調(diào)用關系4.詳細設計(1)實現(xiàn)概要設計的數(shù)據(jù)類型:Mouse 類class mouseprivate:int m_x;int m_y;time_t begi n ,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 in itialize(i nt mapxy,i nt en d)m_x=S;m_y=S;m
4、ape nde nd=9;void 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
5、mapxy, int &t,int 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(me nu2(1,11)=1)/1,返回當前關卡菜單,0,進入下一關卡 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(me
6、nu2(4,15)=1)goto v4;v5: file(5);if(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«"Welcome "<<Name;Loc1(15,5);cout«"第"<<t<<"關 "<<endl; cout
7、<<endl;a();菜單初始狀態(tài)char k;int sel=1;選中第一項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
8、) d();else if(sel=5) menue();break;case 13:/回車確定選擇if(sel=1)/ 開始闖關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
9、=5) 退出exit(0); 這個函數(shù)主要調(diào)用了各實現(xiàn)功能函數(shù).其步驟為:用戶進入菜單項選擇項,方向鍵 限制選中選項移動, enter 進入選中選項.(3)其它模塊的算法描述 限制老鼠移動函數(shù)功能:方向鍵移動老鼠.(上方向鍵進入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&
10、#171;" $ "m_x-;mapm_xm_y=3;求全部路徑功能:輸出迷宮所有路徑int 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 ,e nd)=1) 檢查是否可以走tx=i+dird0;ty=j+dird1;p=maptxty;/ 記錄狀態(tài)maptxty=4;/ 標記路徑mapendend=0; if(tx=end&&ty=end)/ 終點t+ ;/路徑條數(shù)加一Prin t2(m ap,t,e nd);/終點elsepath(tx
11、,ty,map,t,end); maptxty=p;更改地圖功能char key;Loc2(sx,sy);while(1)key=getch();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(MAPs
12、ysx/2=0) MAPsysx/2=1; Loc1(sx,sy);cout«" ;Loc1(sx,sy); break;case 13: return ;default:break;5、編碼與調(diào)試分析1編碼與調(diào)試過程中遇到的問題及解決方法:【問題一】通過清屏打印地圖實現(xiàn)老鼠移動,屏幕閃爍嚴重 解決方法:分析得知,通過移動光標打印老鼠位置,可以解決屏閃問題 解決此問題的核心代碼:COORD pos = a,b;HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(hOut, pos);2
13、. 待解決問題 :時間不能實現(xiàn)連續(xù)變化3、使用說明進入菜單,根據(jù)提示進行選擇:方向鍵選擇, enter 鍵進入4、測試結果(1)進入頁面文案米奇的奇幻之旅Enter鍵進入游戲(2)菜單頁面W e 1 come iu 第開始闖關 杳看闖關攻略 自定義地圖 查看排行榜 退出游戲(3)闖關(4)打印路徑(5)自定義地圖f Control 1 右f “ 空格儻更改地團.:上(只允許更改堆和路)EtHpt*鍵確認更改,返冋菜單(6)查看排行榜玩家分數(shù)貓七150雷哥120P0109小安100hhhh99都敏俊78iu51mikl28a3po3TT98、自學知識在課程設計過程中,特別是在代碼編寫和調(diào)試的過程中,自學了很多新的知識.例如Loc()函數(shù),包含于表頭文件#inelude <window.h>.其功能是:移動光標位 置,更改限制臺輸出顏色.還有一個知識點是清屏函數(shù),它也是包含于<stdlib.h>頭文件中的, 使用形式為system("CLS").主要功能就是清空屏幕.9、課程設計心得體會 課程設計是一次可以讓我們所學的理論與實際相結合的時機. 我們選擇了迷宮游 戲這一題目.我這次的程序準確來說還算不上一個游戲,剛開始想要自學MFC由于時間原因沒有實現(xiàn),這是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 乳品工藝技術創(chuàng)新與發(fā)展考核試卷
- 勘察項目項目管理氣候變化與勘察應對策略考核試卷
- 批發(fā)市場的產(chǎn)品陳列與促銷技巧考核試卷
- 施工監(jiān)督與試車開車中安全注意事項考核試卷
- 小學生天氣安全教育課件
- 農(nóng)田土壤售賣合同范本
- 個人產(chǎn)品交易合同范本
- 玻璃浴房合同范本
- 委托裝修安全合同范本
- 礦供銷合同范本
- TBPMA 0009-2021 生活飲用水二次供水水箱(池)清洗消毒技術規(guī)范
- LY/T 2499-2015野生動物飼養(yǎng)場總體設計規(guī)范
- 佛教空性與緣起課件
- 民兵組織建設課件
- 腹腔鏡下闌尾切除術護理課件
- 《抖音生活服務服務商合作手冊》
- 語文教學設計(教案目標)
- 工程造價三級復核
- 皮膚性病學課件:濕疹皮炎
- 綠化養(yǎng)護重點難點分析及解決措施
- 一體化學工服務平臺、人事管理系統(tǒng)、科研管理系統(tǒng)建設方案
評論
0/150
提交評論