![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/9095ff30-bcea-44bb-9da9-ff367dd16cbb/9095ff30-bcea-44bb-9da9-ff367dd16cbbpic.jpg)
![數(shù)據(jù)結(jié)構(gòu)迷宮求解課程設(shè)計(jì)報(bào)告_第1頁(yè)](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/9095ff30-bcea-44bb-9da9-ff367dd16cbb/9095ff30-bcea-44bb-9da9-ff367dd16cbb1.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程名稱(chēng): 數(shù)據(jù)結(jié)構(gòu) </p><p> 報(bào)告題目: 迷宮求解 </p><p> 學(xué)生姓名: XX </p>
2、<p> 所在學(xué)院: 信息科學(xué)與工程 </p><p> 專(zhuān)業(yè)班級(jí): 軟件工程 </p><p> 學(xué)生學(xué)號(hào):XXXXXXXXXXX </p><p> 指導(dǎo)教師: XXX
3、</p><p> 2017 年 12 月 29 日</p><p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p><p><b> 摘 要</b></p><p> 本程序主要是求迷宮中從人口到出口的所有路徑是一個(gè)經(jīng)典的程序設(shè)計(jì)問(wèn)題。計(jì)算機(jī)解迷宮時(shí),通常用的是“窮舉求解”的方法,即從入口出發(fā)
4、,順某一方向向前探索,若能走通,則繼續(xù)往前走;否則沿原路返回,換一個(gè)方向在繼續(xù)探索,直至所有可能的通路都探索完為止。</p><p> 當(dāng)前位置“可通”,則納入“當(dāng)前路徑”,并繼續(xù)朝“下一位置”探索,即切換為“下一位置”為“當(dāng)前位置”,如此重復(fù)直至到達(dá)出口;若當(dāng)前位置“不可通”,則應(yīng)順著“來(lái)的方向”退回到“前一通道塊”,若該通道塊的四周4個(gè)方塊均“不可通”則應(yīng)從當(dāng)前路徑刪除該通道塊。所謂“下一位置”指的是“當(dāng)前
5、位置”四周4個(gè)方向(東、南、西、北)上相鄰的方塊。以棧S來(lái)記錄“當(dāng)前路徑”,則棧頂中存放的是“當(dāng)前路徑上最后一個(gè)通道塊”。所以即為“當(dāng)前路徑入?!保弧皬漠?dāng)前路徑上刪除前一通道塊”為“出?!薄?lt;/p><p> 在這個(gè)過(guò)程中可以輸出迷宮所走通的路徑,在這次課程設(shè)計(jì)中迷宮是由數(shù)組預(yù)先定義好的,不能由用戶(hù)定義生成,可以加入隨機(jī)函數(shù),自動(dòng)生成二維數(shù)組,還可以用戶(hù)自己輸入迷宮。</p><p>
6、 關(guān)鍵詞:棧;存儲(chǔ)結(jié)構(gòu);數(shù)組</p><p><b> 目 錄</b></p><p><b> 一、課題分析1</b></p><p><b> 二、需求分析1</b></p><p> 1. 主模塊功能描述1</p><p> 2.
7、 子程序模塊設(shè)計(jì)1</p><p><b> 三、設(shè)計(jì)方案1</b></p><p><b> 1.類(lèi)設(shè)計(jì)1</b></p><p> 2.程序模塊設(shè)計(jì)2</p><p> 設(shè)計(jì)方案與實(shí)施與總體設(shè)計(jì)思想2</p><p><b> 3. 主模塊
8、3</b></p><p><b> 3.1 子模塊4</b></p><p><b> 3.1 主菜單5</b></p><p> 3.2 功能A模塊5</p><p> 3.3 功能B模塊5</p><p> 3.4 功能C模塊6</
9、p><p><b> 四、詳細(xì)設(shè)計(jì)7</b></p><p> 1.用結(jié)構(gòu)體構(gòu)建棧7</p><p><b> 2.構(gòu)建類(lèi)7</b></p><p> 3.用數(shù)組構(gòu)建一個(gè)迷宮8</p><p> 4.游戲移動(dòng)控制指令9</p><p>
10、 5.游戲移動(dòng)控制指令四個(gè)方向的實(shí)現(xiàn)10</p><p> 6.游戲移動(dòng)過(guò)程中若是未找到通路,需要返回的指令11</p><p> 7.游戲的主循環(huán)11</p><p> 8.游戲的開(kāi)始于結(jié)束12</p><p> 9.迷宮地圖的查看與通關(guān)后的路徑查詢(xún)13</p><p><b> 五、
11、設(shè)計(jì)總結(jié)13</b></p><p><b> 結(jié)論與心得13</b></p><p><b> 五、參考文獻(xiàn)15</b></p><p><b> 一、課題分析</b></p><p> ?。?)該題目為迷宮求解。</p><p&g
12、t; ?。?)此課題是對(duì)迷宮問(wèn)題的求解。包括用數(shù)組生成迷宮,顯示輸出路徑因此,本程序設(shè)計(jì)共需設(shè)計(jì)一個(gè)主程序以及若干個(gè)子程序。</p><p> ?。?)在本課程設(shè)計(jì)程序里,主程序主要是以一個(gè)m×n的長(zhǎng)方形表示迷宮,0和1分別表示迷宮中的通路和障礙。設(shè)計(jì)一個(gè)程序,對(duì)設(shè)定的迷宮,求出一條從入口到出口的通路,子程序?qū)崿F(xiàn)迷宮地圖的查看和通過(guò)迷宮后的路徑查詢(xún)。</p><p><b&
13、gt; 二、需求分析</b></p><p> 1. 主模塊功能描述 </p><p> 顯示提示語(yǔ)句提示用用戶(hù)選擇輸入執(zhí)行的功能。</p><p> ?。?)開(kāi)始迷宮求解游戲 </p><p><b> (2)查詢(xún)迷宮地圖</b></p><p> ?。?)查詢(xún)通過(guò)迷宮后的
14、路徑 </p><p> 2. 子程序模塊設(shè)計(jì)</p><p><b> ?。?)迷宮求解游戲</b></p><p><b> 輸入1開(kāi)始游戲</b></p><p><b> ?。?)查詢(xún)迷宮地圖</b></p><p> 在菜單中輸入2查看迷
15、宮求解的地圖</p><p> ?。?)查詢(xún)通過(guò)迷宮后的路徑</p><p><b> 輸入2查詢(xún)通關(guān)路徑</b></p><p><b> 三、設(shè)計(jì)方案</b></p><p><b> 1.類(lèi)設(shè)計(jì)</b></p><p> 構(gòu)建一個(gè)Hiddi
16、ng類(lèi),并有私有成員:x坐標(biāo),y坐標(biāo),位置標(biāo)志,初始方向;共有成員:PrintMap打印地圖,GameFunction游戲主循環(huán),Move_up向上移動(dòng),Move_down向下移動(dòng),Move_left向左移動(dòng),Move_right向右移動(dòng),IsGameOver判斷游戲是否結(jié)束,Move_Keys接收移動(dòng)的指令,InDirection相反方向輸出,dir_flage方向標(biāo)志,Hidding::Start()開(kāi)始游戲等等類(lèi),在通過(guò)類(lèi)的實(shí)現(xiàn)來(lái)
17、執(zhí)行相應(yīng)的功能,具體代碼如下:</p><p> class Hidding</p><p><b> {</b></p><p><b> private:</b></p><p> int point_x; //控制運(yùn)動(dòng)的點(diǎn)的x坐標(biāo)</p><p>
18、 int point_y; //控制運(yùn)動(dòng)的點(diǎn)的y坐標(biāo)</p><p> int flage; //判斷標(biāo)志</p><p> int direction; //初始方向</p><p><b> public:</b></p><p> Hidding();</p>
19、<p> int PrintMap(int map[H][H]); //打印地圖</p><p> int GameFunction(int map[H][H], SqStack &S);//游戲主循環(huán)</p><p> int Move_up(int map[H][H],SqStack &S); //向上移動(dòng)</p><
20、;p> int Move_down(int map[H][H], SqStack &S); //向下移動(dòng)</p><p> int Move_left(int map[H][H], SqStack &S); //向左移動(dòng)</p><p> int Move_right(int map[H][H], SqStack &S); //向右移動(dòng)<
21、/p><p> bool IsGameOver(int map[H][H]); //判斷游戲是否結(jié)束</p><p> int Move_Keys(int key, int map[H][H], SqStack &S); //接收移動(dòng)的指令</p><p> int InDirection(int key);
22、 //相反方向輸出</p><p> int dir_flage; //方向標(biāo)志</p><p> int Out(int map[H][H]);//顯示通關(guān)路徑</p><p> int Outa(int map[H][H]);</p><p> int Hidding::menu();//菜單</p>&l
23、t;p> int Hidding::Start();//開(kāi)始游戲</p><p><b> };</b></p><p><b> 2.程序模塊設(shè)計(jì)</b></p><p> 設(shè)計(jì)方案與實(shí)施與總體設(shè)計(jì)思想</p><p> 迷宮形狀由0表示可通過(guò),用1表示障礙。為方便用0,1輸入,2
24、表示起點(diǎn),3表示終點(diǎn)。并把迷宮圖形保存在二維數(shù)組Map中,而打印出的圖形中“□”表示能通過(guò),“■”表示障礙。對(duì)探索過(guò)的位置加以標(biāo)記“☆”,起點(diǎn)和終點(diǎn)分別由“⊙”,“◎”表示,“★”表示為當(dāng)前目標(biāo)位置。</p><p> 根據(jù)二位字符數(shù)組和加標(biāo)記的位置坐標(biāo),輸出迷宮的圖形。</p><p> 該程序在獲取迷宮圖形結(jié)構(gòu)后,目標(biāo)點(diǎn)從起點(diǎn)開(kāi)始搜索可通過(guò)的路徑,目標(biāo)點(diǎn)通過(guò)判斷身邊上下左右四個(gè)位置
25、是否有障礙而選擇前進(jìn)路徑,如果判斷之后遇到?jīng)]有可以通過(guò)的方向,將會(huì)退回之前的位置,另行判斷。直至目標(biāo)點(diǎn)找到出口后,輸出通過(guò)的路徑,程序結(jié)束。</p><p> 1.2程序設(shè)計(jì)流程圖</p><p> 入口出發(fā),順某一方向向前探索,若能走通,則繼續(xù)往前走;否則沿原路返回,換一個(gè)方向在繼續(xù)探索,直至所有可能的通路都探索完為止。</p><p><b>
26、3. 主模塊</b></p><p> 若當(dāng)前位置“可通”,則納入“當(dāng)前路徑”,并繼續(xù)朝“下一位置”探索,即切換為“下一位置”為“當(dāng)前位置”,如此重復(fù)直至到達(dá)出口;若當(dāng)前位置“不可通”,則應(yīng)順著“來(lái)的方向”退回到“前一通道塊”,然后朝著除“來(lái)向”之外的其他方向繼續(xù)探索;若該通道塊的四周4個(gè)方塊均“不可通”則應(yīng)從當(dāng)前路徑刪除該通道塊。所謂“下一位置”指的是“當(dāng)前位置”四周4個(gè)方向(東、南、西、北)上
27、相鄰的方塊。以棧S來(lái)記錄“當(dāng)前路徑”,則棧頂中存放的是“當(dāng)前路徑上最后一個(gè)通道塊”。所以即為“當(dāng)前路徑入棧”;“從當(dāng)前路徑上刪除前一通道塊”為“出?!?。</p><p><b> 3.1 子模塊</b></p><p> 3.程序調(diào)試結(jié)果及分析</p><p><b> 3.1 主菜單</b></p>
28、<p> 這是主界面,提示A、B、C各自代表的功能,輸入1或2或3會(huì)跳轉(zhuǎn)到相應(yīng)的功能模塊,輸入1開(kāi)始游戲,輸入2可查看需要通關(guān)的游戲地圖,輸入3返回。</p><p><b> 3.2 功能A模塊</b></p><p> 當(dāng)從鍵盤(pán)輸入1進(jìn)入A功能模塊,此圖是尋找迷宮路徑,游戲會(huì)由電腦自動(dòng)完成,入口出發(fā),順某一方向向前探索,若能走通,則繼續(xù)往前走;否則
29、沿原路返回,換一個(gè)方向在繼續(xù)探索,直至所有可能的通路都探索完為止,若是成功找到路徑,則輸出恭喜過(guò)關(guān),并且提示是否查看通關(guān)路徑。</p><p><b> 3.3 功能B模塊</b></p><p> 從鍵盤(pán)輸入2查詢(xún)迷宮地圖,可顯示游戲需要通關(guān)的迷宮地圖,繼續(xù)輸入1可以開(kāi)始游戲。</p><p><b> 3.4 功能C模塊&l
30、t;/b></p><p> 游戲的主循環(huán)的類(lèi)的實(shí)現(xiàn)表示游戲的開(kāi)始,判斷當(dāng)前位置標(biāo)記是否為3,如果為3,則表示該位置為終點(diǎn),游戲結(jié)束,輸出恭喜過(guò)關(guān),提示是否查看通關(guān)路徑,從鍵盤(pán)輸入2查詢(xún)通關(guān)路徑 </p><p><b> 四、詳細(xì)設(shè)計(jì)</b></p><p><b> 1.用結(jié)構(gòu)體構(gòu)建棧</b></p
31、><p> 通過(guò)構(gòu)建的棧實(shí)現(xiàn)迷宮求解時(shí)尋找路徑的數(shù)據(jù)的存放于取出,其關(guān)鍵代碼如下:</p><p> typedef struct</p><p><b> {</b></p><p> SElemType *top; //頂部指針</p><p> SElemType *bas
32、e; //底部指針</p><p> int stacksize; //當(dāng)前棧的大小</p><p><b> }SqStack;</b></p><p><b> 2.構(gòu)建類(lèi)</b></p><p> 構(gòu)建一個(gè)Hidding類(lèi),并有私有成員:x坐標(biāo),y坐標(biāo),位置標(biāo)志,初
33、始方向;共有成員:PrintMap打印地圖,GameFunction游戲主循環(huán),Move_up向上移動(dòng),Move_down向下移動(dòng),Move_left向左移動(dòng),Move_right向右移動(dòng),IsGameOver判斷游戲是否結(jié)束,Move_Keys接收移動(dòng)的指令,InDirection相反方向輸出,dir_flage方向標(biāo)志,Hidding::Start()開(kāi)始游戲等等類(lèi),在通過(guò)類(lèi)的實(shí)現(xiàn)來(lái)執(zhí)行相應(yīng)的功能,具體代碼如下:</p>
34、<p> class Hidding</p><p><b> {</b></p><p><b> private:</b></p><p> int point_x; //控制運(yùn)動(dòng)的點(diǎn)的x坐標(biāo)</p><p> int point_y; //控制運(yùn)
35、動(dòng)的點(diǎn)的y坐標(biāo)</p><p> int flage; //判斷標(biāo)志</p><p> int direction; //初始方向</p><p><b> public:</b></p><p> Hidding();</p><p> int PrintMap
36、(int map[H][H]); //打印地圖</p><p> int GameFunction(int map[H][H], SqStack &S);//游戲主循環(huán)</p><p> int Move_up(int map[H][H],SqStack &S); //向上移動(dòng)</p><p> int Move_down(int
37、 map[H][H], SqStack &S); //向下移動(dòng)</p><p> int Move_left(int map[H][H], SqStack &S); //向左移動(dòng)</p><p> int Move_right(int map[H][H], SqStack &S); //向右移動(dòng)</p><p> bool I
38、sGameOver(int map[H][H]); //判斷游戲是否結(jié)束</p><p> int Move_Keys(int key, int map[H][H], SqStack &S); //接收移動(dòng)的指令</p><p> int InDirection(int key); //相反方向輸出</p>
39、<p> int dir_flage; //方向標(biāo)志</p><p> int Out(int map[H][H]);//顯示通關(guān)路徑</p><p> int Outa(int map[H][H]);</p><p> int Hidding::menu();//菜單</p><p> int Hidding::Sta
40、rt();//開(kāi)始游戲</p><p><b> };</b></p><p> 3.用數(shù)組構(gòu)建一個(gè)迷宮</p><p> 1.迷宮形狀由0表示可通過(guò),用1表示障礙。為方便用0,1輸入,2表示起點(diǎn),3表示終點(diǎn)。并把迷宮圖形保存在二維數(shù)組Map中,而打印出的圖形中“□”表示能通過(guò),“■”表示障礙。對(duì)探索過(guò)的位置加以標(biāo)記“☆”,起點(diǎn)和終點(diǎn)分別
41、由“⊙”,“◎”表示,“★”表示為當(dāng)前目標(biāo)位置,其關(guān)鍵代碼如下:</p><p> int map[H][H] =</p><p><b> {</b></p><p> 1,1,1,1,1,1,1,1,1,1, //(9,0) (9,9)</p><p> 1,0,0,0,0,0,1,0,0,1,<
42、/p><p> 1,0,1,1,0,0,1,0,0,1,</p><p> 1,0,0,1,1,0,1,0,1,1,</p><p> 1,1,0,0,1,0,0,0,1,1,</p><p> 1,1,0,1,1,1,1,0,0,1,</p><p> 1,1,0,1,1,1,1,1,0,1,</p>
43、;<p> 1,0,0,1,1,1,1,1,0,1,</p><p> 1,2,1,1,1,1,1,1,3,1,</p><p> 1,1,1,1,1,1,1,1,1,1 //(0,0) (0,9)</p><p><b> };</b></p><p> 2.打印出的圖形中“□”表示能通
44、過(guò),“■”表示障礙。對(duì)探索過(guò)的位置加以標(biāo)記“☆”,起點(diǎn)和終點(diǎn)分別由“⊙”,“◎”表示,“★”表示為當(dāng)前目標(biāo)位置,其關(guān)鍵代碼如下:</p><p> int Hidding::PrintMap(int map[H][H])</p><p><b> {</b></p><p> for (int i = 0; i < H; i++)&
45、lt;/p><p><b> {</b></p><p> for (int j = 0; j < H; j++)</p><p><b> {</b></p><p> switch (map[i][j])</p><p><b> {</b&g
46、t;</p><p><b> case 0:</b></p><p> cout << "□";</p><p><b> break;</b></p><p> case 1: //墻</p><p>
47、 cout << "■";</p><p><b> break;</b></p><p> case 2: //起點(diǎn)</p><p> cout << "⊙";</p><p><b> break;</
48、b></p><p> case 3: //終點(diǎn)</p><p> cout << "◎";</p><p><b> break;</b></p><p> case 7: //走過(guò)的路徑</p><
49、p> cout << "☆";</p><p><b> break;</b></p><p><b> case 9:</b></p><p> cout << "★"; </p><p><b> brea
50、k;</b></p><p><b> default:</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> c
51、out << endl;</p><p><b> }</b></p><p><b> return 0;</b></p><p> }//PrintMap</p><p> 4.游戲移動(dòng)控制指令</p><p> 構(gòu)建一個(gè)棧,用Key控制移動(dòng),上移指
52、令Key=8,下移指令Key=5,左移指令Key=4,右移指令Key=6,其關(guān)鍵代碼如下: </p><p> int Hidding::Move_Keys(int key,int map[H][H], SqStack &S)</p><p><b> {</b></p><p> switch (key)</p>
53、;<p><b> {</b></p><p><b> case 8:</b></p><p> Move_up(map,S);</p><p><b> break;</b></p><p><b> case 4:</b>&l
54、t;/p><p> Move_left(map,S);</p><p><b> break;</b></p><p><b> case 6:</b></p><p> Move_right(map,S);</p><p><b> break;</b
55、></p><p><b> case 5:</b></p><p> Move_down(map,S);</p><p><b> break;</b></p><p><b> default:</b></p><p><b>
56、; break;</b></p><p><b> }</b></p><p><b> return 0;</b></p><p> }//Move_Keys</p><p> 5.游戲移動(dòng)控制指令四個(gè)方向的實(shí)現(xiàn)</p><p> 以向上移動(dòng)指令的實(shí)
57、現(xiàn)為例,判斷是否是走過(guò)的路徑,若是則x-1當(dāng)前位置標(biāo)記為0;判斷前方是否可行,若是x-1,當(dāng)前位置標(biāo)記為7,(7為走過(guò)的路徑),并且入棧執(zhí)行一次;若前方數(shù)組值為1,表示不能通過(guò),繼續(xù)判斷其他方向是否可以通過(guò),如map[point_x][point_y - 1] == 0則表示左側(cè)可以通過(guò),direction=4,移動(dòng)方向?yàn)樽?,入棧一次,其他方向的移?dòng)指令大致相同,都是先判斷,在通過(guò)入棧實(shí)現(xiàn)移動(dòng)游戲移動(dòng)過(guò)程中若是未找到通路,需要返回,則執(zhí)
58、行InDirection反方向移動(dòng)指令。</p><p><b> 其關(guān)鍵代碼如下:</b></p><p> int Hidding::Move_up(int map[H][H],SqStack &S)</p><p><b> {</b></p><p> if (map[poi
59、nt_x - 1][point_y] == 7)</p><p><b> {</b></p><p> map[point_x][point_y] = 0;</p><p> point_x -= 1;</p><p><b> }</b></p><p> el
60、se if ((map[point_x - 1][point_y] == 0 && direction != 5) || map[point_x - 1][point_y] == 3) //如果前方可行</p><p><b> {</b></p><p> map[point_x][point_y] = 7;</p>&
61、lt;p> point_x -= 1;</p><p> Push(S, direction);</p><p><b> }</b></p><p> if (map[point_x - 1][point_y] == 1)</p><p><b> {</b></p>
62、<p> if (map[point_x][point_y - 1] == 0)</p><p><b> {</b></p><p> direction = 4;</p><p> Push(S, direction);</p><p><b> }</b></p&g
63、t;<p> else if (map[point_x][point_y + 1] == 0)</p><p><b> {</b></p><p> direction = 6;</p><p> Push(S, direction);</p><p><b> }</b>
64、</p><p><b> else</b></p><p><b> {</b></p><p> dir_flage = Pop(S);</p><p> InDirection(dir_flage);</p><p> map[point_x][point_y
65、] = 0;</p><p><b> }</b></p><p><b> }</b></p><p><b> return 0;</b></p><p> }//Move_up</p><p> 6.游戲移動(dòng)過(guò)程中若是未找到通路,需要返回
66、的指令</p><p> 判斷上一步執(zhí)行的指令Key,在執(zhí)行放方向移動(dòng)的指令,具體代碼如下:</p><p> int Hidding::InDirection(int key)</p><p><b> {</b></p><p> switch (key)</p><p><b&
67、gt; {</b></p><p><b> case 8:</b></p><p> direction = 5;</p><p><b> break;</b></p><p><b> case 4: </b></p><p>
68、; direction = 6;</p><p><b> break;</b></p><p><b> case 5:</b></p><p> direction = 8;</p><p><b> break; </b></p><
69、p><b> case 6: </b></p><p> direction = 4;</p><p><b> break; </b></p><p><b> default:</b></p><p><b> break;</b>
70、</p><p><b> }</b></p><p><b> return 0;</b></p><p> }//InDirection</p><p><b> 7.游戲的主循環(huán)</b></p><p> 用一個(gè)sleep函數(shù)控制游戲的速
71、度,具體代碼如下:</p><p> int Hidding::GameFunction(int map[H][H], SqStack &S)</p><p><b> {</b></p><p> Sleep(100);</p><p> PrintMap(map);</p><p
72、> system("cls");</p><p> while (!IsGameOver(map))</p><p><b> {</b></p><p> map[point_x][point_y] = 9;</p><p> PrintMap(map);</p>&l
73、t;p> Move_Keys(direction, map,S);</p><p> cout<<"方向:";</p><p> switch(direction)</p><p><b> {</b></p><p><b> case 8:</b>
74、</p><p> cout << "上" << endl;</p><p><b> break;</b></p><p><b> case 5:</b></p><p> cout<<"下";</p>
75、;<p><b> break;</b></p><p><b> case 6:</b></p><p> cout<<"右";</p><p><b> break;</b></p><p><b> cas
76、e 4:</b></p><p> cout<<"左";</p><p><b> break;</b></p><p><b> }</b></p><p> cout << direction << endl;</
77、p><p> system("cls");</p><p> Sleep(100);</p><p><b> }</b></p><p><b> return 0;</b></p><p> }//GameFunction</p>
78、<p> 8.游戲的開(kāi)始于結(jié)束</p><p> 游戲的主循環(huán)的類(lèi)的實(shí)現(xiàn)表示游戲的開(kāi)始,判斷當(dāng)前位置標(biāo)記是否為3,如果為3,則表示該位置為終點(diǎn),游戲結(jié)束,輸出恭喜過(guò)關(guān),提示是否查看通關(guān)路徑,具體代碼如下:</p><p> int Hidding::Start()</p><p><b> {</b></p>
79、<p> hid.GameFunction(map,S1);</p><p> if (hid.IsGameOver(map)</p><p> cout << "恭喜過(guò)關(guān)!" << endl;</p><p> cout<<"輸入2顯示通關(guān)路徑。"<<end
80、l;</p><p><b> }</b></p><p> bool Hidding::IsGameOver(int map[H][H])</p><p><b> {</b></p><p> if (map[point_x][point_y] == 3) //3表示終點(diǎn)
81、</p><p> return true;</p><p><b> else</b></p><p> return false;</p><p> }//IsGameOver</p><p> 9.迷宮地圖的查看與通關(guān)后的路徑查詢(xún)</p><p> 開(kāi)始游
82、戲前可以查看迷宮的地圖,在開(kāi)始游戲?qū)ふ业酵P(guān)路徑后可以查看對(duì)應(yīng)的路徑,用for循環(huán)實(shí)現(xiàn)二維數(shù)組的讀出,相應(yīng)的通關(guān)路徑會(huì)以☆符合標(biāo)記出來(lái),具體代碼如下:</p><p> for(int i=1;i<=H;i++)</p><p> for(int j=1;j<=H;j++)</p><p> if(map[i][j]=0)</p>&
83、lt;p> cout<<map[i][j];</p><p><b> 五、設(shè)計(jì)總結(jié) </b></p><p><b> 結(jié)論與心得</b></p><p> 本次課程設(shè)計(jì)題目為迷宮求解,通過(guò)該題目的設(shè)計(jì)過(guò)程,我們小組加深了對(duì)棧的邏輯結(jié)構(gòu),存儲(chǔ)結(jié)構(gòu)及入棧出棧過(guò)程的理解,對(duì)棧的基本運(yùn)算的實(shí)現(xiàn)有所掌握
84、,對(duì)課本中所學(xué)的各種數(shù)據(jù)結(jié)構(gòu)進(jìn)一步理解和掌握,學(xué)會(huì)了如何把學(xué)到的知識(shí)用于解決實(shí)際問(wèn)題,鍛煉了自己動(dòng)手的能力。</p><p> 本次課程設(shè)計(jì),使我們對(duì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)方法、步驟、思路,有一定的了解和認(rèn)識(shí),它相當(dāng)于實(shí)際設(shè)計(jì)工作的模擬。在課程設(shè)計(jì)過(guò)程中,基本能按照規(guī)定的程序進(jìn)行,先針對(duì)表達(dá)式算法為背景,建立系統(tǒng)模型:收集、調(diào)查有關(guān)資料,共同與老師和同學(xué)進(jìn)行討論、修改、再討論、再修改,最后確定方案。 </
85、p><p> 一個(gè)人要完成所有的工作是非常困難和耗時(shí)的,我們小組都是分工合作,這樣既鍛煉了每個(gè)人,又學(xué)到了很多的知識(shí)。在以后的學(xué)習(xí)中我會(huì)更加注意各個(gè)方面的能力的協(xié)調(diào)發(fā)展。在課程設(shè)計(jì)時(shí)遇到了很多的問(wèn)題,在老師的幫助,和對(duì)各種資料的查閱中,將問(wèn)題解決,培養(yǎng)了自主動(dòng)手,獨(dú)立研究的能力,為今后在學(xué)習(xí)工作中能更好的發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ)。 兩周的課程設(shè)計(jì)很短暫,但其間的內(nèi)容是很充實(shí)的,在其中我學(xué)習(xí)到了很多平時(shí)書(shū)本中無(wú)
86、法學(xué)到的東西,積累了經(jīng)驗(yàn),鍛煉了自己分析問(wèn)題,解決問(wèn)題的能力,并學(xué)會(huì)了如何將所學(xué)的各課知識(shí)融會(huì),組織,來(lái)配合學(xué)習(xí),兩周中我們小組收益很大,學(xué)到很多。</p><p><b> 心得體會(huì):</b></p><p> 通過(guò)此次課程設(shè)計(jì),使我更加了解了數(shù)據(jù)結(jié)構(gòu)著方面的知識(shí),在設(shè)計(jì)的過(guò)程中遇到了一些很難的問(wèn)題,經(jīng)過(guò)一遍一遍地思考,與同學(xué)和老師的交流中找到了問(wèn)題原因的所在,
87、也知道了自己在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。通過(guò)這次的課程設(shè)計(jì),獲得了很多寶貴的經(jīng)驗(yàn),特別是怎么樣通過(guò)理論與實(shí)踐相結(jié)合,把書(shū)本上的內(nèi)容應(yīng)用到我們做的程序上去。學(xué)會(huì)了調(diào)試程序的一般方法,知道了如何在困難重重中一步一步發(fā)現(xiàn)問(wèn)題,解決問(wèn)題。 </p><p><b> 五、參考文獻(xiàn)</b></p><p> [1] 鄭莉,董淵,何江舟.
88、C++語(yǔ)言程序設(shè)計(jì)(第4版)[M].北京:清華大學(xué)出版社,2010:123—145</p><p> [2] 蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M].北京:清華大學(xué)出版社(范素珍 白立軍),2007:142—160</p><p> [3] 呂鳳翥.C++語(yǔ)言程序設(shè)計(jì)(第3版)[M].北京:電子工業(yè)出版社,2009:151—175</p><p> [4]
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)迷宮求解課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-迷宮求解
- 迷宮求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 迷宮求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-迷宮求解
- 迷宮求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---迷宮問(wèn)題求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--求解迷宮問(wèn)題
- 迷宮求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)迷宮求解(代碼參數(shù))課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)與算法----迷宮求解課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--迷宮
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-迷宮求解(遞歸與非遞歸)
- 迷宮問(wèn)題的求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)迷宮課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)迷宮課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---迷宮
評(píng)論
0/150
提交評(píng)論