【正文】
==0){ y+=step。amp。 } else { y=step。 default :break。 }/* 電腦控制結(jié)束 */ }/* main()結(jié)束 */ /* 繪制小人 */ void drawman(int x,int y,int len){ int r=len/4。 line(x,y,xlen,y+len)。 for(i=0。j++){ if(bg[i][j]==1) rect(x,y,x+size1,y+size1)。 } rectangle(0,0,size*b,size*a)。 line(size*(b1),size*a,size*b,size*a)。i++) line(i,y0,i,y1)。 /* 初始化迷宮地圖 */ for(i=0。j++) bg[i][j]=1。 while(1){ bg[i][j]=0。 ran=(int)rand()*4。 direc=3。 direc=0。 direc=1。 direc=2。jb。 關(guān)鍵詞 : C語(yǔ)言 迷宮 編譯 Abstract Along with science and technology of day by day development, calculator information knowledge drive more and more people cognition and usage, nowadays knowledge explosion of ages calculator nowise the question bee people in mon use of daily tool, to 1 usually usage The person of calculator to say, how use good the software be a very important problem, it to people daily of a lot of operation have very big of help, for a technical personnel, usually e in contact with original code, this have to academic association usage C language, although now majority of software of design is pass other high class language and adoption system integration the software edit and translate, their cores still can not get away from usage C language to set up, therefore, simple maze procedure of realization beneficial with provide a good mode of thinking in laterly of the development the item. Keyword: The C language maze edit and translate 目 錄 摘 要 第一章 c語(yǔ)言迷宮的 系統(tǒng)要求和分析 系統(tǒng)要求 系統(tǒng)要求分析 第二章 c語(yǔ)言迷宮 功能模塊結(jié)構(gòu) 功能模塊劃分 各個(gè)模塊的功能 第三章 主要模塊的算法說(shuō)明 程序總體思路 初始化迷宮數(shù)組函數(shù) 尋找路徑函數(shù) Path 路徑樹(shù)的節(jié)點(diǎn)結(jié)構(gòu)體 第四章 開(kāi)發(fā)工具的介紹 Turbo C 語(yǔ)言概述 C 語(yǔ)言的特點(diǎn) Turbo C 概述 Turbo C 的安裝和啟動(dòng) 總結(jié) 致謝 參考文獻(xiàn) 附錄 附錄 A c語(yǔ)言迷宮的使用說(shuō)明 附 錄 B 主要代碼 第一章、 系統(tǒng)要求和分析 系統(tǒng)要求 1. 隨機(jī)產(chǎn)生一個(gè)固定大小的迷宮圖(迷宮有唯一的一個(gè)入口,一個(gè)出口); 2. 用圖形的方式畫(huà)出迷宮圖; 3. 根據(jù)該迷宮圖作出判斷,迷宮又從入口到出口的路線; 4. 如果有路線的話,找到其中的一條路線,并畫(huà)出來(lái); 5. 用窮舉的方法找出所有的路線,找到其中步數(shù)最少的路線。 4. 綜上,程序要求隨機(jī)生成一個(gè)迷宮,判斷是否有最短路徑,最后將迷宮圖形化輸出。 2. 開(kāi)始畫(huà)面函數(shù) Wele:負(fù)責(zé)生成開(kāi)始畫(huà)面。 路徑搜索樹(shù)的生長(zhǎng)函數(shù) TreeGrow:負(fù)責(zé)判斷傳遞給這個(gè)函數(shù)的節(jié)點(diǎn)在四個(gè)方向是否可以生成節(jié)點(diǎn),如果可以就調(diào)用函數(shù) TreeNewPoint 生成新節(jié)點(diǎn),并調(diào)用函數(shù) LeafGrow 將新節(jié)點(diǎn)增加到待搜索節(jié)點(diǎn)中。 6. 結(jié)束畫(huà)面函數(shù) GameOver:負(fù)責(zé)生成結(jié)束畫(huà)面。 2. 首先調(diào)用迷宮生成函數(shù) MazeCreat,生成一個(gè)隨機(jī)的迷宮并記錄在二維數(shù)組上 0。 2. 隨機(jī)生成迷宮內(nèi)部,具體做法是對(duì)迷宮內(nèi)部每一個(gè)點(diǎn)進(jìn)行隨機(jī)數(shù)判斷,當(dāng)滿足條件時(shí)把這個(gè)點(diǎn)標(biāo)志為圍墻,否則把這個(gè)點(diǎn)標(biāo)記為通路。 4. 用指針 leafHeadOld 指向當(dāng)前需要判斷的節(jié)點(diǎn)鏈表,用指針以leafHeadNow 指向下一輪判斷中需要判斷的節(jié)點(diǎn)鏈 表。 6. 因?yàn)槁窂剿阉鳂?shù)每次增長(zhǎng)都要在所有分支上增長(zhǎng)一個(gè)節(jié)點(diǎn),故從樹(shù)根到各個(gè)末端所走的路程是相同的,而且只 有一個(gè)分支可以走到出口,而這條就是最短路徑。 LeafGrow 的功能是:將函數(shù) TreeNewPoint 傳遞來(lái)的新節(jié)點(diǎn)的指針加入到鏈表中,如果鏈表為空則創(chuàng)建鏈表。 /*用于記錄各個(gè)方向的屬性 */ int infoDown。 /*用于指向其父節(jié)點(diǎn),初始值為 NULL*/ }。 待搜索節(jié)點(diǎn)結(jié)構(gòu)體 struct leaf {struct tree *point。而路徑數(shù)的增長(zhǎng)將挨個(gè)判斷(調(diào)用 TreeGrow 函數(shù))上一次存儲(chǔ)的處 于同一路徑長(zhǎng)度的路徑樹(shù)節(jié)點(diǎn)。T 貝爾實(shí)驗(yàn)室的 Ken Thompson 根據(jù) BCPL 語(yǔ)言設(shè)計(jì)出較先進(jìn)的并取名為 B 的語(yǔ)言 , 最后導(dǎo)了 C 語(yǔ)言的 問(wèn)世。 C 語(yǔ)言的特點(diǎn) C 語(yǔ)言發(fā)展如此迅速 , 而且成為最受歡迎的語(yǔ)言之一 , 主要因?yàn)樗哂袕?qiáng)大的 功能。 C 語(yǔ)言可以象 匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作 , 而這三者是計(jì)算機(jī)最基本的工作單元。 3. C 語(yǔ)言功能齊全 C 語(yǔ)言具有各種各樣的數(shù)據(jù)類型 , 并引入了指針概念 , 可使程序效率更高。 Turbo C 概述 Turbo C 的產(chǎn)生與發(fā)展 Turbo C 是美國(guó) Borland 公司的產(chǎn)品 ,Borland公司是一家專門從事軟件開(kāi)發(fā)、 研制的大公司。 Turbo 在原來(lái)集成開(kāi)發(fā)環(huán)境的基礎(chǔ)上 增加了查錯(cuò)功能 , 并可以在 Tiny 模式下直接生成 .COM (數(shù)據(jù)、代碼、堆棧處在同一 64K 內(nèi)存中 ) 文件。 Turbo C 基本配置要求 Turbo C 可運(yùn)行于 IBMPC 系列微機(jī) , 包括 XT, AT 及 IBM 兼容機(jī)。下面對(duì) Turbo C 的主要文 件作一簡(jiǎn)單介紹 : 安裝程序文件 集成編譯 集成開(kāi)發(fā)環(huán)境的配置設(shè)置程序 幫助文件 讀取 的駐留程序 README 關(guān)于 Turbo C 的信息文件 配置文件轉(zhuǎn)換程序 項(xiàng)目管理工具 命令行編譯 Turbo C 系列連接器 Turbo C 系列庫(kù)管理工具 C0?.OBJ 不同模式啟動(dòng)代碼 C?.LIB 不同模式運(yùn)行庫(kù) 圖形庫(kù) 8087 仿真庫(kù) 8087 庫(kù) *.H Turbo C 頭文件 *.BGI 不同顯示器圖形驅(qū)動(dòng)程序 *.C Turbo C 例行程序 (源文件 ) 其中 : 上面的 ?分別為 : T Tiny(微型模式 ) S Small(小模式 ) C Compact(緊湊模式 ) M Medium(中型模式 ) L Large(大模式 ) H Huge(巨大模式 ) Turbo C 的安裝和啟動(dòng) Turbo C 的安裝非常簡(jiǎn)單 , 只要將 1盤(pán)插入 A驅(qū)動(dòng)器中 , 在 DOS 的 A 下鍵 入 : AINSTALL 即可 , 此時(shí)屏幕上顯示三種選擇 : 1. 在硬盤(pán)上創(chuàng)造一個(gè)新目錄來(lái)安裝整個(gè) Turbo C 系統(tǒng)。 這里假定按第一種選擇進(jìn)行安裝 , 只要在安裝過(guò)程中按對(duì)盤(pán)號(hào)的提示 , 順序插 入各個(gè)軟盤(pán) , 就可以順利地進(jìn)行安裝 , 安裝完畢將在 C 盤(pán)根目錄下建立一個(gè) TC 子目 錄 , TC 下還建立了兩個(gè)了目錄 LIB 和 INCLUDE, LIB 子目錄中存放庫(kù)文件 , INCLUDE 子目錄中存放所有頭文件。我設(shè)計(jì)的程序經(jīng)驗(yàn)在我的工作中起到了至關(guān)重要的作用,在這次的畢業(yè)設(shè)計(jì)中雖然時(shí)間緊迫但我學(xué)會(huì)了很多,希望在日后的努力中能做出更完善的系統(tǒng) 經(jīng)過(guò)上機(jī)實(shí)踐學(xué)習(xí),使我對(duì) C語(yǔ)言有了更進(jìn)一步的認(rèn)識(shí)和了解,要想學(xué)好它要重在實(shí)踐,要通過(guò)不斷的上機(jī)操作才能更好地學(xué)習(xí)它,通過(guò)實(shí)踐,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯(cuò)字母,通過(guò)學(xué)習(xí)也有所改進(jìn);再有對(duì) C語(yǔ)言的一些標(biāo)準(zhǔn)庫(kù)函數(shù)不太了解,還有對(duì)函數(shù)調(diào)用的正確使用 不夠熟悉,還有對(duì) C語(yǔ)言中經(jīng)常出現(xiàn)的錯(cuò)誤也不了解,通過(guò)實(shí)踐,使我在這幾個(gè)方面的認(rèn)識(shí)有所提高。) a,d分別代表上 ,下 ,左 ,右方向。 void drawbg(int[][],int,int,int,int,int)。 int len=10。 int gdriver=DETECT,gmode。 /* registerbgidriver(EGAVGA_driver)。 */ initgraph(amp。 setwritemode(XOR_PUT)。 setcolor(BLUE)。 x+=len。 outtextxy(60,120,PRESS KEY 1 :YOU ,)。139。 switch(ch){ case 39。bg[i][j1]==0){ if(xstep){x=step。 case 39。bg[i+1][j]==0){ if(y479step){y+=step。 case 39。bg[i][j+1]==0){ if(x639step){x+=step。w39。i。 delay(800)。 setcolor(RED)。 }/* 人工控制結(jié)束 */ else{ /* 電腦控制 */ /* direc表示上一步運(yùn)動(dòng)方向 */ /* 并表示下一步運(yùn)動(dòng)方向 */ /* 0~3分別表示 西、北、東、南 */ direc=2。 switch(direc){ case 0: /* 以 3,0,1的次序嘗試 */ if(iM1amp。 direc=3。j。bg[i1][j]==0){ y=step。j++。amp。 } else if(i0amp。 direc=1。j++。 direc=3。bg[i1][j]==0){