


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、#in clude<iostream>#in clude<ioma nip>#in clude<fstream>#in elude <ctime>#i nclude "SQ_Stack.h" using n amespace std;struct Visitedint num; 是否是通路(1或0)int visited;判斷是否已被訪問(1或0);class MiGong private:Visited maze100100;/ 存儲迷宮的矩陣int n;II迷宮大小(n*n)in t pow;判斷方向的變量public:v
2、oid creat()建造迷宮int choose,i,j;while(1)cout<<"1.自動輸入"<<endl;cout<<"2.手動輸入"<<endl; cout<<"請輸入序號:"cin> >choose;system("cls");if(choose=1)II 自動輸入cout<<"請輸入迷宮大小(n*n):"cin»n;for(i=0;i< n;i+)II訪問位初始化,賦值為0for
3、(j=0;j< n;j+)mazeij.visited=0;sran d( un sig ned)time(0);cout<<"你生成的迷宮為("<<n<<"*"<<n<<"型):"<<endl; for( i=0;i< n; i+)for( j=0;j< n;j+)若是邊界,則置為1if(i=0|j=0|i=n-1|j=n-1)mazeij. num=1;elsemazeij. num=(ra nd()%(2-0);if(i=1 &&a
4、mp;j=1)/入口置為 0mazeij. num=0;else if(i=n-2&&j=n-2)出 口置為 0mazeij. num=0;cout<<mazeij. num<<""if(j=n-1)cout<<e ndl; cout<<e ndl; break;/手動輸入/訪問位初始化為0else if(choose=2)cout<<"請輸入迷宮大小(n*n):" cin»n;for(i=0;i <n ;i+)for(j=0;j< n;j+)mazeij.
5、visited=0;system("cls");while(1)int c;cout<<"1.當(dāng)前頁面輸入:"<<endl;cout<<"2.文件輸入:"<<endl;cin> >c;if(c=1)system("cls");cout<<"請手動輸入迷宮:"<<e ndl;int mi;cout<<"你生成的迷宮為("<<n<<"*"&l
6、t;<*<"型):"<<endl; for( i=0;i< n; i+)for( j=0;j< n;j+)cin>> mi;mazeij. num=mi;cout<<mazeij. num<<""if(j=n-1)cout<<e ndl;cout<<e ndl;cout<<e ndl;break;else if(c=2)ifstream infile("輸入迷宮.txt"); for(i=0;i <n ;i+)for(j=
7、0;j< n;j+)in file»mazeij. num; cout<<mazeij. num<<" ” if(j=n-1)cout<<e ndl;in file.close();break;elsecout<<"輸入錯誤,請重新輸入!system("pause"); system("cls");con ti nue;break;elsecout<<"輸入錯誤,請重新輸入!system("pause");system("
8、;cls");con ti nue;void seek()尋找路徑SQ_Stack Stack;/定義棧Stack.I nitStack();/ 棧初始化if(mazen-2n-2.num) return;若出口為 0,則跳出int i=n-2,j=n-2;int pow,a=0;do開始尋找線路if(!mazeij. num)&&(mazeij.visited=0)/ 如果是通路且從未被訪問if(i!=Stack.getTI()|(j!=Stack.getTJ() 問該點(diǎn)Stack.push(ij);mazeij.visited=1;if(i=1 &&
9、;j=1)跳出全部循環(huán)a=1;break;i=i;j=j-1;pow=0;/如果該點(diǎn)未入棧,則入棧,訪且把訪問位置為1/如果是出口則初始向左訪問elseint back1,back2; pow+; i=Stack.getTI(); j=Stack.getTJ();while(1)if(pow=1)j-;if(i=Stack.getI()&&(j=Stack.getJ() pow+;i=Stack.getTI();j=Stack.getTJ();/如果不是通路/方向位改變/回到訪問的點(diǎn)/向左一位訪問如果是來路/則改變方向位/回到訪問的點(diǎn)con ti nue;elsebreak;e
10、lse if(pow=2)i-;if(i=Stack.getl()&&(j=Stack.getJ()pow+;i=Stack.getTI(); j=Stack.getTJ(); con ti nue;elsebreak;else if(pow=3)i+;if(i=Stack.getI()&&(j=Stack.getJ() pow+;i=Stack.getTI(); j=Stack.getTJ(); con ti nue;elsebreak;else if(pow=4)j+;if(i=Stack.getI()&&(j=Stack.getJ()pow
11、+;i=Stack.getTI(); j=Stack.getTJ(); con ti nue;elseII向上一位訪問II向下一位訪問II向右一位訪問break;若四個方向均不通,就彈將該點(diǎn)的通路位置為 1繼續(xù)往回的點(diǎn)找通路如果棧為空,則表示無通x "<<""elseStack.pop(back1,back2);棧mazeback1back2. num=1;i=Stack.getTI();j=Stack.getTJ();pow=0; break;if(Stack.StackEmpty()路。break;while(a=O);if(!Stack.Stac
12、kEmpty()int x,y;int v=Stack.StackLength()-1;v 用來訪問棧int total=Stack.StackLe ngth();while(total)Stack.visit(x,y,v);mazexy. num=8;total-;system("pause");system("cls");cout<<"線路為:"<<e ndl;ofstream outfile("迷宮線路.txt",ios:app);for(i nt i=0;i <n ;i+)fo
13、r(i nt j=0;j <n ;j+)if(mazeij. num=8)cout<<setw(2)<<setiosflags(ios:left)<<" cout.width(2);outfile<<setiosflags(ios:left)<<" x "<< elsecoutvvsetw(2)vvsetiosflags(ios:left)vvmazeij. numvv"" cout.width(2);outfilevvsetiosflags(ios:left)vvm
14、azeij. numvv""if(j=n-1)cout<<e ndl; outfile<<e ndl;outfilevve ndl;Stack.output();elsesystem("pause"); system("cls"); Stack.output();Stack.DestroyStack();void menu()MiGo ng m;int i=0;coutvv"*定義 MiGong類輸出通路銷毀棧*"<<e ndl;進(jìn)入游戲coutvve ndl; coutvv""vve ndl;coutvve ndl;cout<v"*"v<e ndldocreat();/健立迷宮seek();/尋找通路while(1)coutvv"0.繼續(xù)游戲。"vvendl; coutvv"1.退出游
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漁船租賃業(yè)務(wù)合同協(xié)議
- 銀行信托計劃保管合同模板
- 供港農(nóng)產(chǎn)品購銷合同代理協(xié)議(樣本)
- 國有林權(quán)出讓合同
- 畢業(yè)生實(shí)習(xí)與勞動合同解析
- 渠道合作銷售合同范本
- 合同法視角:股東不履行義務(wù)糾紛案例分析
- 新車銷售團(tuán)隊心理素質(zhì)訓(xùn)練考核試卷
- 木制拼圖游戲考核試卷
- 世界音樂教育項目的策劃與實(shí)施考核試卷
- 部編版小學(xué)(2024版)小學(xué)道德與法治一年級下冊《有個新目標(biāo)》-第一課時教學(xué)課件
- 稅法(第5版) 課件 第13章 印花稅
- 建加油站申請書
- 2024-2025學(xué)年廣州市高二語文上學(xué)期期末考試卷附答案解析
- 2025年山東鋁業(yè)職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2024年教育公共基礎(chǔ)知識筆記
- 《銷售合同執(zhí)行》課件
- 深夜地鐵7號線施工方案
- 山東2024年山東經(jīng)貿(mào)職業(yè)學(xué)院第二批招聘102人歷年參考題庫(頻考版)含答案解析
- 宮腔球囊止血護(hù)理常規(guī)
- 口腔6S管理詳解
評論
0/150
提交評論