導航:首頁 > 編程知識 > 如何在編程中做出簡單迷宮

如何在編程中做出簡單迷宮

發布時間:2024-06-26 12:28:53

❶ C++編程問題:編一個迷宮游戲程序

在書找的,只打了個結構體(太多了),我利用stack做的!希望能對你有所幫助!程序如下:
typedef struct{
int ord;//通道塊的路徑上的序號
PosType seat;//通道塊在迷宮的坐標位置
int di;//從此通道塊走向下一個通道塊的方向
}SelemType;//stack的元素類型
Status MazePath(MazeType maze,PosType start,PosType end){
//若迷宮 maze中存在從入口start到出口end的通道,所以,求得一條存放在stack中
//(從stack底到頂)並返回TRUE,否則返回FALSE
InitStack(S);
curpos=start;//設置當前的位置為入口位置
curstep=1;//探索第一步
do{
if(Pass(curpos)){//當前位置可以通過,即是未曾走過的通道塊
FootPrint(curpos);//留下足跡
e=(curstep,curpos,1);
Push(s,e);//加入路徑
if(curpos==end)
return(TRUE);//到達終點
curpos=NextPos(curpos,1);//下一位置是當前位置的東部
curstep++;//探索下一步
}
else{//當前位置不能通過
if(!StackEmpty(S)){
Pop(S,e);
while(e.di==4&&!StackEmpty(S)){
MarkPrint(e.seat);//留下不能通過的標記,並退回一步
Pop(S,e);
}
if(e.di<4){
e.di++;
Push(s.e);//換下一個方向探索
curpos=NextPos(e.seat e.di);//設定當前位置是該新方向上的相鄰塊
}//if
}//if
}//else
}while(!StackEmpty(S));
return(FALSE);
}//MazePath

❷ 鎬庝箞鐢╲iple 緙栦竴涓璁╁皬杞﹁嚜鍔ㄨ蛋榪峰鐨勭▼搴忥紵

浣犳兂瑕佷簡瑙e備綍浣跨敤VIPLE緙栧啓涓涓璁╁皬杞﹁嚜鍔ㄦ父璧拌糠瀹鐨勭▼搴忓悧錛璁╂垜鏉ヤ竴姝ユヤ負浣犲睍紺鴻繖涓榪囩▼銆


VIPLE鏄涓縐嶇洿瑙傛槗鎳傜殑鍥懼艦鍖栫紪紼嬪伐鍏鳳紝涓嬮潰鎴戝皢閫氳繃涓緋誨垪鍏抽敭璁劇疆鐨勬埅鍥撅紝甯︿綘涓姝ユユ瀯寤鴻繖涓榪峰鎺㈢儲涔嬫棶銆傛瘡涓姝ラゆ垜閮界粏蹇冩爣娉ㄤ簡閲嶈佺殑璁劇疆錛岃╀綘鑳藉熻交鏉劇悊瑙c



璁╂垜閫氳繃榪欎釜瀹為檯鐨勭ず渚嬫潵鐩磋傚湴婕旂ず鏁翠釜榪囩▼錛https://www.hu.com/video/1464521792551841792


閫氳繃VIPLE鐨勫浘褰㈠寲鐣岄潰錛屼綘灝嗙湅鍒板皬杞﹀備綍鏅鴻兘鍦伴伩寮闅滅嶏紝鎸夌収棰勮劇殑璺寰勭┛瓚婅糠瀹銆傚笇鏈涜繖涓鏁欑▼鑳藉府鍔╀綘蹇閫熸帉鎻″備綍鍒╃敤VIPLE緙栧啓鑷鍔ㄥ寲紼嬪簭錛岃╀綘鐨勫皬杞︿篃鑳芥垚涓鴻糠瀹涓鐨勫皬灝忓媷澹錛

❸ 鏁版嵁緇撴瀯c++緙栫▼ 璧拌糠瀹

#include <stdlib.h>

#include <stdio.h>

typedef struct /*璺鍙g殑緇撴瀯浣撳畾涔*/

{

int left; /*鍚戝乏*/

int forward; /*鍚戝墠*/

int right; /*鍚戝彸*/

} InterSection;

typedef struct /*榪峰鐨勭粨鏋勪綋瀹氫箟*/

{

int mazeSize; /*璺鍙d釜鏁*/

int Exit; /*鍑哄彛*/

InterSection *intSec; /*璺鍙i泦鍚*/

} Maze;

void CreatMaze(char *filename, Maze *m)

/*鎸夋枃浠禙ilename涓瀛樻斁鐨勬暟鎹鍒涘緩榪峰玬*/

{

FILE *fp;

int i;

fp = fopen(filename, "r"); /*鎵撳紑鏂囦歡*/

if(!fp)

{

printf("鏁版嵁鏂囦歡鏃犳硶鎵撳紑!");

return;

}

fscanf(fp, "%d", &m->mazeSize); /*璇誨叆璺鍙d釜鏁*/

m->intSec = (InterSection *)malloc

(sizeof(InterSection)*(m->mazeSize+1)); /*寤虹珛mazeSize+1涓鍏冪礌鐨勬暟緇*/

for(i = 1; i <= m->mazeSize; i++) /*璇誨叆鍏ㄩ儴璺鍙g殑緇撴瀯浣撴暟鍊*/

fscanf(fp, "%d%d%d", &m->intSec[i].left, &m->intSec[i].forward, &m->intSec[i].right);

fscanf(fp, "%d%d%d", &m->Exit); /*璇誨叆鍑哄彛鏁板*/

close(fp); /*鍏抽棴鏂囦歡*/

}

/*鐢ㄥ洖婧娉曟悳緔㈣糠瀹鐨勬墍鏈夊垎鏀錛岃緭鍏ュ弬鏁癱urrSetValue涓哄綋鍓嶆墍澶勭殑璺鍙*/

int TravMaze(Maze *m, int currSetValue)

{

/* currSetValue>0涓烘湁璺寰勫瓨鍦錛屽彲浠ョ戶緇鎺㈢儲鍙戠幇涓鏉¤礬寰*/

if(currSetValue > 0)

{

if(currSetValue == m->Exit) /*鍒拌揪鍑哄彛*/

{

printf("%d <== ", currSetValue); /*杈撳嚭璺鍙e彿*/

return 1;

}

else if(TravMaze(m, m->intSec[currSetValue].left) == 1) /*鍚戝乏鎺㈢儲*/

{

/*鍙鏈夋帰緔㈡垚鍔燂紝鍗寵繑鍥炲間負1錛屾墠鎵ц屼互涓嬭鍙*/

printf("%d <== ", currSetValue); /*杈撳嚭璺鍙e彿*/

return 1;

}

else if(TravMaze(m, m->intSec[currSetValue].forward) == 1) /*鍚戝墠鎺㈢儲*/

{

printf("%d <== ", currSetValue); /*杈撳嚭璺鍙e彿*/

return 1;

}

else if(TravMaze(m, m->intSec[currSetValue].right) == 1) /*鍚戝彸鎺㈢儲*/

{

printf("%d <== ", currSetValue); /*杈撳嚭璺鍙e彿*/

return 1;

}

}

/* currSetValue=0涓烘棤璺寰勫瓨鍦錛岃繑鍥0*/

return 0;

}

void main(void)

{

Maze m;

int start = 1;

CreatMaze("Maze1.dat", &m);

if(TravMaze(&m, start))

printf("\n姝よ糠瀹鐨勪竴鏉¢氳礬濡備笂鎵紺猴紒");

else

printf("\n姝よ糠瀹鏃犻氳礬!");

}

閱讀全文

與如何在編程中做出簡單迷宮相關的資料

熱點內容
灌南數控編程怎麼學 瀏覽:957
系統apk圖標修改工具 瀏覽:121
蘋果6手機網路沒信號怎麼回事啊 瀏覽:378
手機掃描文件轉換成word 瀏覽:636
手機本地視頻的文件夾在哪裡 瀏覽:908
蘋果11無法安裝app找不到描述文件 瀏覽:363
咋新建cad文件 瀏覽:969
窩窩app怎麼樣自動關 瀏覽:228
蘋果電腦怎麼用wps生成多個文件夾 瀏覽:309
蘋果手機哪裡有賣 瀏覽:83
app登錄狀態為什麼不過期 瀏覽:160
win10創意者無法升級 瀏覽:59
如何查殺後門程序 瀏覽:498
定類數據可以用哪些描述統計方法 瀏覽:278
微信公眾號閱讀全文怎麼跳轉文件 瀏覽:935
迷你編程怎麼免費進入 瀏覽:354
蘋果應用設置密碼 瀏覽:21
windowsmac共享文件夾 瀏覽:274
數據安全性和固態硬碟哪個好 瀏覽:433
word為什麼圖片不能旋轉 瀏覽:732

友情鏈接