迷宮問題C代碼_第1頁
迷宮問題C代碼_第2頁
迷宮問題C代碼_第3頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論