![C語言程序設(shè)計(jì)課程設(shè)計(jì)(論文)迷宮_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/20/875e258c-f11b-4ae9-b893-83ddf2893ca3/875e258c-f11b-4ae9-b893-83ddf2893ca31.gif)
![C語言程序設(shè)計(jì)課程設(shè)計(jì)(論文)迷宮_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/20/875e258c-f11b-4ae9-b893-83ddf2893ca3/875e258c-f11b-4ae9-b893-83ddf2893ca32.gif)
![C語言程序設(shè)計(jì)課程設(shè)計(jì)(論文)迷宮_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/20/875e258c-f11b-4ae9-b893-83ddf2893ca3/875e258c-f11b-4ae9-b893-83ddf2893ca33.gif)
![C語言程序設(shè)計(jì)課程設(shè)計(jì)(論文)迷宮_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/20/875e258c-f11b-4ae9-b893-83ddf2893ca3/875e258c-f11b-4ae9-b893-83ddf2893ca34.gif)
![C語言程序設(shè)計(jì)課程設(shè)計(jì)(論文)迷宮_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/20/875e258c-f11b-4ae9-b893-83ddf2893ca3/875e258c-f11b-4ae9-b893-83ddf2893ca35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 大 學(xué) c語言程序設(shè)計(jì) 課程設(shè)計(jì)(論文)題目: 迷宮問題 院(系): 專業(yè)班級: 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 教師職稱: 講 師 起止時間: 2009.12.14至2009.12.26 課程設(shè)計(jì)(報(bào)告)任務(wù)及評語院(系): 教研室:學(xué) 號學(xué)生姓名專業(yè)班級程序設(shè)計(jì)(報(bào)告)題目迷宮問題程序設(shè)計(jì)(報(bào)告)任務(wù)程序設(shè)計(jì)的任務(wù)與要求:(1)掌握c語言編程的基礎(chǔ)知識。(2)較熟練地編寫c語言應(yīng)用程序。(3)了解c語言的常用標(biāo)準(zhǔn)函數(shù)、編程技巧、異常處理。(5)聯(lián)系已學(xué)過的內(nèi)容,鞏固所學(xué)的理論,增強(qiáng)獨(dú)立工作能力。(6)通過設(shè)計(jì)主要使學(xué)生有一個獨(dú)立編寫程序的過程,對理論學(xué)習(xí)及動手能力都有一個很大的提高。(
2、7)通過本次設(shè)計(jì),進(jìn)一步培養(yǎng)學(xué)生熱愛專業(yè)的思想,同時對本專業(yè)綜合素質(zhì)的提高起一個積極的推動作用。課程設(shè)計(jì)過程中,要嚴(yán)格遵守實(shí)踐環(huán)節(jié)的時間安排,聽從指導(dǎo)教師的指導(dǎo)。正確地完成上述內(nèi)容,記錄實(shí)習(xí)日記,規(guī)范完整地撰寫出課程設(shè)計(jì)報(bào)告。指導(dǎo)教師評語及成績成績: 指導(dǎo)教師簽字: 2009 年 12 月 31 日目 錄第1章 課程設(shè)計(jì)的目的與要求11.1 課程設(shè)計(jì)目的11.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境11.3 課程設(shè)計(jì)的預(yù)備知識11.4 課程設(shè)計(jì)要求1第2章 課程設(shè)計(jì)內(nèi)容22.1程序功能介紹22.2程序整體設(shè)計(jì)說明22.2.1設(shè)計(jì)思路22.2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說明32.2.3程序結(jié)構(gòu)(流程圖)42.2.4各模
3、塊的功能及程序說明62.2.5程序結(jié)果72.3程序源代碼及注釋9第3章 課程設(shè)計(jì)總結(jié)19參考資料21第1章 課程設(shè)計(jì)的目的與要求1.1 課程設(shè)計(jì)目的本課程設(shè)計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)重要的實(shí)踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完程序設(shè)計(jì)語言(c)課程后進(jìn)行的一次全面的綜合練習(xí)。本課程設(shè)計(jì)的目的和任務(wù): 1. 鞏固和加深學(xué)生對c語言課程的基本知識的理解和掌握 2. 掌握c語言編程和程序調(diào)試的基本技能 3. 利用c語言進(jìn)行基本的軟件設(shè)計(jì)4. 掌握書寫程序設(shè)計(jì)說明文檔的能力5. 提高運(yùn)用c語言解決實(shí)際問題的能力1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境硬件要求能運(yùn)行windows 2000/xp操作系統(tǒng)的微機(jī)系統(tǒng)。c語言程序設(shè)
4、計(jì)及相應(yīng)的開發(fā)環(huán)境。1.3 課程設(shè)計(jì)的預(yù)備知識熟悉c語言及c語言開發(fā)工具。1.4 課程設(shè)計(jì)要求1. 分析課程設(shè)計(jì)題目的要求2. 寫出詳細(xì)設(shè)計(jì)說明3. 編寫程序代碼,調(diào)試程序使其能正確運(yùn)行4. 設(shè)計(jì)完成的軟件要便于操作和使用5. 設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告第2章 課程設(shè)計(jì)內(nèi)容2.1程序功能介紹迷宮是深受大家喜愛的游戲之一,本課題要求隨機(jī)生成一個美觀逼真的迷宮圖,它是隨機(jī)生成的且迷宮大小可以改變,迷宮的大小為n*n,n預(yù)定義為常數(shù),修改n的值可以改變迷宮的大小(只要不超過屏幕顯示范圍),而程序不必做修改。程序采用了兩種運(yùn)行方式:一種通過自動探索,這是用遞歸方法實(shí)現(xiàn);一種是由人工操作探索通過,這利用
5、了手動操作8個代表不同的方向的鍵位來實(shí)現(xiàn)。用白色表示可走的路,藍(lán)色表示墻壁不可以通過。2.2程序整體設(shè)計(jì)說明 2.2.1設(shè)計(jì)思路一般的迷宮為二維平面圖形,將迷宮的左上角作入口,右下角作出口,求出從入口點(diǎn)到出口點(diǎn)的一條通路,作為線性結(jié)構(gòu)的典型應(yīng)用,大多用非遞歸方法實(shí)現(xiàn),輸出用0代表通路,1代表墻壁。程序采用了一個美觀逼真的迷宮圖,而且是隨機(jī)生成,迷宮的大小為nn,n預(yù)定義為常數(shù),修改n的值可以改變迷宮的大小(只要不超過屏幕顯示范圍),而程序不必做修改。用白色表示可走的路,藍(lán)色表示墻壁不可以通過。程序還設(shè)計(jì)了兩種運(yùn)行方式:一種是由系統(tǒng)自動運(yùn)行探索,用遞歸方法實(shí)現(xiàn);一種是由人工操作探索通路。系統(tǒng)運(yùn)行
6、首先出現(xiàn)提示字符串“please select hand(1) else auto”,詢問是選擇人工探索還是系統(tǒng)自動探索,當(dāng)用戶輸入字符1按回車鍵后出現(xiàn)一個迷宮圖,紅色矩形塊(表示探索物)出現(xiàn)在左上角,這是可以代表4個方向的字符選擇通路,遇到墻壁不能通行,按回車鍵結(jié)束探索,如果這時探索物移動到右下角出口,則顯示找到通路信息,否則顯示沒找到通路信息。在提示信息后,如果輸入的字符不是1,則系統(tǒng)自動查找通路,如果沒有找到通路,則顯示沒有找到通路信息。如果找到通路,則用紅色標(biāo)記走過的路徑。程序首先要考慮迷宮的表示,這是一個二維關(guān)系圖,典型的存貯儲方式是選擇二維數(shù)組,數(shù)組元素的值只有兩種狀態(tài),所以取值為
7、0或1,0表示通路,1表示墻壁,這里取名為map。圖形的顯示就可以根據(jù)數(shù)組元素的值來確定,如果是人工探索,則根據(jù)按鍵來確定探索物的位置坐標(biāo),利用循環(huán)語句即可實(shí)現(xiàn),如果是系統(tǒng)自動探索,并且在4個方向進(jìn)行遞歸算法,即可實(shí)現(xiàn)尋找路徑。2.2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說明 .用m行n列的m*n個正方格表示一個迷宮,其中劃有斜線的方格表示不可通行,未劃有斜線的方格表示可以通行。請編寫尋找從入口到出口的一條最短路徑的程序。 (1)迷宮的規(guī)格(即行數(shù)與列數(shù)),狀態(tài)設(shè)置(即各方格能否通行的狀態(tài)),以及入口和 出口的位置,均應(yīng)由輸入隨機(jī)確定。 (2)求得的最短路徑,應(yīng)該以從入口到出口的路徑上的各個方格的坐標(biāo)的線性序
8、列輸出。當(dāng)無通路時,應(yīng)該報(bào)告無路徑的信息。 (3)盡量采用結(jié)構(gòu)化程序設(shè)計(jì)方法,要求對各個模塊的功能及參數(shù)作必要的說明提示(1)迷宮可以采用matrix類型的二維數(shù)組a表示。a.rownum與a.colnum分別表示迷宮的實(shí)際的行數(shù)與列數(shù)。而a.mazeij表示迷宮中第i行第j列的一個方格,用a.mazeij=0表示該方格可以通行,用a.mazeij=1表示該方格不可以通行。 (2)由于要尋找從入口到出口的一條最短路徑,最好將迷宮看作是一個圖結(jié)構(gòu)。則問題轉(zhuǎn)化為尋找從對應(yīng)于入口頂點(diǎn)到對應(yīng)于出口頂點(diǎn)的一條最短路徑的問題。該問題可以采用從入口頂點(diǎn)出發(fā),進(jìn)行廣度優(yōu)先搜索遍歷,直到遇到出口頂點(diǎn)或者遍歷完畢
9、也沒有遇到出口頂點(diǎn)為止。這二種情況分別對應(yīng)于最短路徑探索成功與查無通路的事實(shí)。 (3)基于上述分析,涉及到數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換,即將二維數(shù)組表示的迷宮a轉(zhuǎn)換為以adjlist類型的鄰接表表示的圖結(jié)構(gòu)g。在圖結(jié)構(gòu)中,將迷宮中的每個方格看作是一個頂點(diǎn)。不可通行的方格都是孤立頂點(diǎn);相鄰的可通行的方格所對應(yīng)的頂點(diǎn)之間看作是有邊相連。因此迷宮可以看作是由m*n個頂點(diǎn)及無向邊構(gòu)成的一個非連通的無向圖。盡管圖是不連通的,但不影響本問題的求解,而且本問題有解的條件是:入口頂點(diǎn)與出口頂點(diǎn)在同一個連通分量中。 圖結(jié)構(gòu)g中,g.adjk表示編號為k的頂點(diǎn)的鄰接情況的單鏈表的頭指針;g.vexnum表示圖g中的實(shí)際頂點(diǎn)數(shù),
10、而且具有如下關(guān)系:g.vexnum=a.rownum*a.colnum (4)為了避免迷宮數(shù)據(jù)的重復(fù)輸入,我們期望a能夠自動地轉(zhuǎn)換為g。因此應(yīng)該設(shè)計(jì)一個轉(zhuǎn)換算法create_adjlist(a,g)。而圖結(jié)構(gòu)中頂點(diǎn)是要編號的,我們約定以行為序,順序給迷宮a中的方格所對應(yīng)的頂點(diǎn)編號。這樣迷宮中方格的坐標(biāo)(即行row和列col)與圖g中所對應(yīng)的頂點(diǎn)的編號(即verno)之間具有如下關(guān)系: verno=(row-1)* n + col row=(verno-1)/ n + 1 col=(verno-1)% n + 1 (5)在廣度優(yōu)先搜索遍歷求解最短路徑過程中,應(yīng)該設(shè)置一個隊(duì)列queue作為輔助數(shù)據(jù)
11、結(jié)構(gòu);路徑采用一個整數(shù)數(shù)組pred來表示。這二個數(shù)據(jù)結(jié)構(gòu)的存儲結(jié)構(gòu)類型均為list類型,其說明定義如下: typedef int listmaxver; 隊(duì)列queue應(yīng)該設(shè)置front和rear分別指示列首與列尾,queuek表示第k個入列的頂點(diǎn)編號。采用pred記錄路徑,predi表示頂點(diǎn)i在廣度優(yōu)先搜索遍歷過程中的前趨頂點(diǎn)的編號,它表明是經(jīng)過邊(predi,i)達(dá)到頂點(diǎn)i的。這樣,當(dāng)路徑探索成功時,我們可以從出口頂點(diǎn)倒推出從入口到出口的一條路徑來。當(dāng)然要涉及到從頂點(diǎn)編號向方格坐標(biāo)的反轉(zhuǎn)換,這個公式在上面已經(jīng)給出了。2.2.3程序結(jié)構(gòu)(流程圖)程序結(jié)構(gòu)設(shè)計(jì)流程圖如圖2.1所示預(yù)定義主函數(shù)m
12、ain()定義二維數(shù)組mapnn清屏clrscr()輸出字符串并初始化initiiiiiiiiininit隨機(jī)生成迷宮(maprand)開始 判斷字符串是否1if手動探索peoplefind()自動探索findway()輸出結(jié)果result()關(guān)閉圖像close()結(jié)束 圖2.1流程圖2.2.4各模塊的功能及程序說明 程序用二維數(shù)組表示迷宮 第一個模塊主函數(shù)main()的功能是:首先確定是人工還是系統(tǒng)自動探索,通過輸 入字符選定。選定后調(diào)用圖形初始化函數(shù),接著調(diào)用迷宮生成函數(shù)及迷宮顯示函數(shù)。然后根據(jù)輸入的字符調(diào)用人工探索函數(shù)或自動探索函數(shù),探索完畢進(jìn)行結(jié)果處理,最后關(guān)閉圖形系統(tǒng),程序結(jié)束。第二
13、個模塊初始化函數(shù)init()的功能是:由于迷宮是在圖形方式下顯示的,所以要進(jìn)行圖形初始化。第三個模塊迷宮生成函數(shù)maprand()的功能是: 用數(shù)組map表示一個迷宮,要隨機(jī)生成迷宮,數(shù)組元素的值利用隨機(jī)函數(shù)生成0或1的數(shù)。第四個模塊迷宮顯示函數(shù)prmap()的功能: 根據(jù)數(shù)組map的值輸出迷宮圖,利用函數(shù)setfillstyle()設(shè)置圖形實(shí)體填充樣式bar()函數(shù)輸出矩形塊。數(shù)組元素的下標(biāo)為矩形塊的中心坐標(biāo),利用兩重循環(huán)語句可以完成迷宮圖的顯示。第五個模塊系統(tǒng)自動5findway()的功能:從下標(biāo)(1,1)開始探索,依次按照右下、下、右、右上、左、左下、左上的順序前進(jìn),若該方向上的值為0,
14、則前進(jìn)一步。第六個模塊人工探索peoplefind()的功能:首先輸出迷宮圖以及人工控制操作圖示,紅色探索出現(xiàn)在左上角,采用人工控制8個方向的移動,由于是8個方向,用光標(biāo)鍵只能控制4個方向,為了統(tǒng)一采用了臨近的8個字符,q,w,e,a,d,z,x,c代表8個方向,按了字符后,對應(yīng)方向不是墻壁,可以將紅色探索物移到相應(yīng)的位置,按回車表示結(jié)果人工操作。如果此時map數(shù)組元素的坐標(biāo)是出口,則yes的值為1,探索成功,否則值為0。由于探索物不停的移動,要在新位置顯示,并將走過的路恢復(fù)為白色通路,可以調(diào)用drawpeople(&x,&y,n)完成.參數(shù)x和y代表所在的行坐標(biāo)和列坐標(biāo),n代表所選的方向,根
15、據(jù)n的值,將x和y進(jìn)行相應(yīng)的變化.第七個模塊結(jié)果處理函數(shù)result(): 最終結(jié)果是找到和沒找到兩種情況,在程序中設(shè)計(jì)全局變量yes,根據(jù)yes的值進(jìn)行處理。如果yes為0,調(diào)用函數(shù)notfind(),顯示找到通路信息,否則調(diào)用函數(shù)find()。如果是系統(tǒng)自動探索,find()會顯示出所走過的路徑,如果是人工探索,沒有記錄走過的路徑,只顯示找到通路的信息。第八個模塊圖形關(guān)閉函數(shù)close()的功能: 調(diào)用closegraph()關(guān)閉圖形系統(tǒng),程序結(jié)束。2.2.5程序結(jié)果程序編譯連接成功后,首先出現(xiàn)提示字符串“please select hard(1) else auto”詢問是選擇人工探索還
16、是選擇系統(tǒng)自動探索,其中1是人工探索。圖2.2結(jié)果當(dāng)輸入字符1時,此時是人工探索。按回車鍵后出現(xiàn)一個迷宮圖,紅色矩形塊出項(xiàng)在左上角,這時可以按代表8個方向的字符選擇通路,若可以找到通路,則走的路都由紅色標(biāo)記,當(dāng)遇到墻壁是則不能通行,此時按回車鍵結(jié)束探索,屏幕出現(xiàn)“not find a way”提示信息。如果輸入的字符不是1,則系統(tǒng)自動查找通路。如果沒有找通路,則顯示沒有找到通路的信息“not find a way”,如果找到通路,則用紅色標(biāo)記走過的路徑,回車后結(jié)束探索。圖2.3戲圖片找到出路,屏幕顯示find a way!2.3程序源代碼及注釋#include #include #includ
17、e #include #include #define n 20/*迷宮的大小,可改變*/int oldmapnn;/*遞歸用的數(shù)組,用全局變量節(jié)約時間*/int yes=0;/*yes是判斷是否找到路的標(biāo)志,1找到,0沒找到*/int way1002,wayn=0;/*way數(shù)組是顯示路線用的,wayn是統(tǒng)計(jì)走了幾個格子*/void init(void);/*圖形初始化*/void close(void);/*圖形關(guān)閉*/void drawpeople(int *x,int *y,int n);/*畫人工探索物圖*/void peoplefind(int (*x)n);/*人工探索*/voi
18、d waycopy(int (*x)n,int (*y)n);/*為了8個方向的遞歸,把舊迷宮圖拷貝給新數(shù)組*/int findway(int (*x)n,int i,int j);/*自動探索函數(shù)*/void maprand(int (*x)n);/*隨機(jī)生成迷宮函數(shù)*/void prmap(int (*x)n);/*輸出迷宮圖函數(shù)*/void result(void);/*輸出結(jié)果處理*/void find(void);/*成功處理*/void notfind(void);/*失敗處理*/void main(void)/*主函數(shù)*/ int mapnn; /*迷宮數(shù)組*/ char ch;
19、 clrscr(); printf(n please select hand(1) else auton);/*選擇探索方式*/ scanf(%c,&ch); init(); /*初始化*/ maprand(map);/*生成迷宮*/ prmap(map);/*顯示迷宮圖*/ if(ch=1) peoplefind(map);/*人工探索*/ else findway(map,1,1);/*系統(tǒng)自動從下標(biāo)1,1的地方開始探索*/ result();/*輸出結(jié)果*/ close();void init(void)/*圖形初始化*/ int gd=detect,gm; initgraph(&gd,
20、&gm,c:tc);void drawpeople(int *x,int *y,int n)/*畫人工控制圖*/*如果將以下兩句注釋掉,則顯示人工走過的路徑,*/ setfillstyle(solid_fill,white); /*設(shè)置白色實(shí)體填充樣式*/ bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6);/*恢復(fù)原通路*/ switch(n)/*判斷x,y的變化,8個方向的變化*/ case 1: (*x)-;break; /*上*/ case 2: (*x)-;(*y)+;break ;/*右上*/ case 3: (*y
21、)+;break; /*右*/ case 4: (*x)+;(*y)+;break; /*右下*/ case 5: (*x)+;break; /*下*/ case 6: (*x)+;(*y)-;break; /*左下*/ case 7: (*y)-;break; /*左*/ case 8: (*x)-;(*y)-;break; /*左上*/ setfillstyle(solid_fill,red);/*新位置顯示探索物*/ bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6);void peoplefind(int (*map)n
22、)/*人工手動查找*/ int x,y; char c=0;/*接收按鍵的變量*/ x=y=1;/*人工查找的初始位置*/ setcolor(11); line(500,200,550,200); outtextxy(570,197,d); line(500,200,450,200); outtextxy(430,197,a); line(500,200,500,150); outtextxy(497,130,w); line(500,200,500,250); outtextxy(497,270,x); line(500,200,450,150); outtextxy(445,130,q);
23、 line(500,200,550,150); outtextxy(550,130,e); line(500,200,450,250); outtextxy(445,270,z); line(500,200,550,250); outtextxy(550,270,c);/*以上是畫8個方向的控制介紹*/ setcolor(yellow); outtextxy(420,290,press enter to end);/*壓回車鍵結(jié)束*/ setfillstyle(solid_fill,red); bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6);/*入
24、口位置顯示*/ while(c!=13)/*如果按下的不是回車鍵*/ c=getch();/*接收字符后開始各個方向的探索*/ if(c=w&mapx-1y!=1) drawpeople(&x,&y,1);/*上*/ else if(c=e&mapx-1y+1!=1) drawpeople(&x,&y,2);/*右上*/ else if(c=d&mapxy+1!=1) drawpeople(&x,&y,3);/*右*/ else if(c=c&mapx+1y+1!=1) drawpeople(&x,&y,4);/*右下*/ else if(c=x&mapx+1y!=1) drawpeople(
25、&x,&y,5);/*下*/ else if(c=z&mapx+1y-1!=1)drawpeople(&x,&y,6); /*左下*/ elseif(c=a&mapxy-1!=1) drawpeople(&x,&y,7); /*左*/else if(c=q&mapx-1y-1!=1) drawpeople(&x,&y,8); /*左上*/ setfillstyle(solid_fill,white); /*消去紅色探索物,恢復(fù)原迷宮圖*/ bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6); if(x=n-2&y=n-2)/*人工控制找成功的話*/ y
26、es=1; /*如果成功標(biāo)志為1*/void waycopy(int (*oldmap)n,int (*map)n)/*拷貝迷宮數(shù)組 */ int i,j; for(i=0;in;i+) for(j=0;jn;j+) oldmapij=mapij;int findway(int (*map)n,int i,int j)/*遞歸找路*/ if(i=n-2&j=n-2)/*走到出口*/ yes=1;/*標(biāo)志為1,表示成功*/ return; mapij=1;/*走過的地方變?yōu)?*/ waycopy(oldmap,map); /*拷貝迷宮圖*/ if(oldmapi+1j+1=0&!yes)/*判斷
27、右下方是否可走*/ findway(oldmap,i+1,j+1); if(yes)/*如果到達(dá)出口了,再把值賦給顯示路線的way數(shù)組,也正是這個原因,所以具體路線是從最后開始保存*/ waywayn0=i; waywayn+1=j; return; waycopy(oldmap,map); if(oldmapi+1j=0&!yes)/*判斷下方是否可以走,如果標(biāo)志yes已經(jīng)是1也不用找下去了*/ findway(oldmap,i+1,j); if(yes) waywayn0=i; waywayn+1=j; return; waycopy(oldmap,map); if(oldmapij+1=
28、0&!yes)/*判斷右方是否可以走*/ findway(oldmap,i,j+1); if(yes) waywayn0=i; waywayn+1=j; return; waycopy(oldmap,map); if(oldmapi-1j=0&!yes)/*判斷上方是否可以走*/ findway(oldmap,i-1,j); if(yes) waywayn0=i; waywayn+1=j; return; waycopy(oldmap,map); if(oldmapi-1j+1=0&!yes)/*判斷右上方是否可以走*/ findway(oldmap,i-1,j+1); if(yes) way
29、wayn0=i; waywayn+1=j; return; waycopy(oldmap,map); if(oldmapi+1j-1=0&!yes)/*判斷左下方是否可以走*/ findway(oldmap,i+1,j-1); if(yes) waywayn0=i; waywayn+1=j; return; waycopy(oldmap,map); if(oldmapij-1=0&!yes)/*判斷左方是否可以走*/ findway(oldmap,i,j-1); if(yes) waywayn0=i; waywayn+1=j; return; waycopy(oldmap,map); if(o
30、ldmapi-1j-1=0&!yes)/*判斷左上方是否可以走*/ findway(oldmap,i-1,j-1); if(yes) waywayn0=i; waywayn+1=j; return; return;void maprand(int (*map)n)/*開始的隨機(jī)迷宮圖*/ int i,j; cleardevice();/*清屏*/ randomize(); /*隨機(jī)數(shù)發(fā)生器*/ for(i=0;in;i+) for(j=0;jn;j+) if(i=0|i=n-1|j=0|j=n-1)/*最外面一圈為墻壁*/ mapij=1; else if(i=1&j=1|i=n-2&j=n-
31、2)/*出發(fā)點(diǎn)與終點(diǎn)表示為可走的*/ mapij=0; else mapij=random(2);/*其它的隨機(jī)生成0或1*/ void prmap(int (*map)n)/*輸出迷宮圖*/ int i,j; for(i=0;in;i+) for(j=0;j=0;i-) bar(100+wayi1*15-6,50+wayi0*15-6,100+ wayi1*15+6,50+wayi0*15+6); sleep(1);/*控制顯示時間*/ bar(100+(n-2)*15-6,50+(n-2)*15-6,100+(n-2)*15+6,50+(n-2)*15+6); /*在目標(biāo)點(diǎn)標(biāo)紅色*/ se
32、tcolor(green); settextstyle(0,0,2);/*設(shè)置字體大小*/ outtextxy(130,400,find a way!);void notfind(void)/*沒找到通路*/ setcolor(green); settextstyle(0,0,2);/*設(shè)置字體大小*/ outtextxy(130,400,not find a way!);void result(void)/*結(jié)果處理*/ if(yes)/*如果找到*/ find(); else/*沒找到路*/ notfind(); getch();void close(void)/*圖形關(guān)閉*/ close
33、graph();第3章 課程設(shè)計(jì)總結(jié)通過這段時間的課程設(shè)計(jì),我認(rèn)識到c語言是一門比較難的課程。需要多花時間上機(jī)練習(xí)。這次的程序訓(xùn)練培養(yǎng)了我實(shí)際分析問課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.回顧起此次c語言課程設(shè)計(jì),至今我仍感慨頗多,的確,從課題到定稿,從理論到實(shí)踐,在整整兩星期的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時不僅可以鞏固了上課所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,彌補(bǔ)了上課所學(xué)的知識。 我認(rèn)為它是一個團(tuán)隊(duì)的工作,團(tuán)隊(duì)需要個人,個人也離不開團(tuán)隊(duì),
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 增進(jìn)疾病預(yù)防知識宣傳的措施計(jì)劃
- 2025年硅酮結(jié)構(gòu)密封膠項(xiàng)目合作計(jì)劃書
- 華東師大版七年級數(shù)學(xué)下冊全冊教案(2024年春季版)
- 2025年大數(shù)據(jù)金融項(xiàng)目建議書
- 昆蟲記中的生命奧秘征文
- 太陽能光伏系統(tǒng)投資合同
- Pyridoxine-tri-2-hexyldecanoate-生命科學(xué)試劑-MCE
- Imidazole-salicylate-Standard-生命科學(xué)試劑-MCE
- 工業(yè)廢水處理與循環(huán)利用項(xiàng)目合同
- 自卸車自愿租賃協(xié)議書
- 財(cái)產(chǎn)保險招標(biāo)評分細(xì)則表
- 培卵素是什么
- 《細(xì)菌》初中生物優(yōu)秀教學(xué)設(shè)計(jì)(教案)
- PID烙鐵恒溫控制器設(shè)計(jì)與制作_圖文
- ihaps用戶手冊
- 鐵塔組立施工作業(yè)指導(dǎo)書抱桿計(jì)算
- 總生產(chǎn)成本年度比較表
- 新媒體運(yùn)營全工作計(jì)劃表(共2頁)
- 2020河南中考化學(xué)試卷含答案
- 醫(yī)療器械全生命周期風(fēng)險管理
- DNA甲基化檢測技術(shù)
評論
0/150
提交評論