导航:首页 > 编程知识 > 如何在编程中做出简单迷宫

如何在编程中做出简单迷宫

发布时间: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姝よ糠瀹鏃犻氳矾!");

}

阅读全文

与如何在编程中做出简单迷宫相关的资料

热点内容
孩子出生证能在什么网站找到吗 浏览:465
java日期compare 浏览:120
深州有哪个编程学校好 浏览:826
抖音数据中心怎么才算合格 浏览:540
全栈视频数据是什么 浏览:787
网上少儿编程哪个好些 浏览:132
oracle数据库优化方法 浏览:844
怎么关闭网络唤醒 浏览:894
孤单的微信头像动漫 浏览:305
有没有哪个大学教编程 浏览:851
wordpress后台添加广告位置 浏览:491
怎样快速修改qq密码 浏览:145
怎么清除恶意攻击网站 浏览:511
qq头像女生侧颜马尾 浏览:718
苹果自己的文件格式 浏览:85
放在c盘的app如何删除 浏览:912
华为手机克隆后文件放在哪里 浏览:631
清乐网站制作需要多少人 浏览:294
网络游戏系统 浏览:933
java如何写框架 浏览:423

友情链接