c语言迷宫游戏可视化

一些注意事项:

1.这个程序是动态的,运行后自动找到迷宫的出路。

这个程序对于刚学C语言的人来说意义重大。

3.四周都是墙,坐标(1,1)是入口,右下角是出口。

声明:本程序不能用VC调试,需要修改。

这个程序的调试工具是TC。.....................

#包含“graphics.h”

#包含“dos.h”

#包含" stdlib.h "

#包含“process.h”

#define MAX_COL 14/*定义迷宫大小*/

#define MAX_ROW 14

typedef结构

{ int vert

int horiz

}抵消;

mapture(int i,int j,int k);/*迷宫式,(I,j) k模式*/

init maze();/*初始化迷宫阵列*/

findmaze(int i,int j);/*找到(I,j)要走,标记为*/

map maze();/*画原始迷宫*/

int findpath(int row,int col);/*递归函数,求迷宫路径*/

mapbar();/*画一个正方形*/

init grap();/*初始化VGA*/

print();/*迷宫结束后,输出是否成功*/

int startx=50,starty = 50/*图纸的屏幕坐标*/

int maze[MAX _ ROW][MAX _ COL];

偏移量move[8]={{0,1},{1,1},{-1,1},{1,0},{-1,0},{0,-1},{1,-1},{-1 },1/*朝8个方向看*/

Initmaze()/*初始化迷宫数组*/

{ int i,j;

for(I = 0;我& ltMAX _ ROWI++)/*墙的迷宫设置为1 */

{ maze[I][0]= 1;

迷宫[I][MAX _ COL-1]= 1;

}

for(I = 0;我& ltMAX _ COLi++)

{ maze[0][I]= 1;

迷宫[MAX _ ROW-1][I]= 1;

}

randomize();

for(I = 1;我& ltMAX _ ROW-1;I++)/*随机生成迷宫图形1表示不通0表示可行*/

for(j = 1;j & ltMAX _ COL-1;j++)

{

maze[I][j]= random(2);

}

}

Findmaze(int i,int j)/* Find (i,j) to go */

{

mapture(j,I,2);/*图表上的标记*/

睡眠(1);

}

Returnmaze(int i,int j)/* Find (i,j) to go,但mark */

{

mapture(j,I,3);/*图表上的标记*/

睡眠(1);

}

Print(int i)/*迷宫后输出是否成功*/

{ settextstyle(1,0,5);

if(i==1)

outtextxy(340,400,"真实路径!");

else if(i==2)

outtextxy(340,400,“没有路径!”);

}

Int findpath(int row,int col)/*通过递归找到迷宫*/

{ int direct,next_row,next _ col

直接= 0;

迷宫[1][1]= 2;

mapture(1,1,2);

睡眠(1);

while(直接& lt8)/*朝8个方向看*/

{ next_row=row+move[direct]。垂直;/*设置下一个坐标*/

next_col=col+move[direct]。horiz

If(maze[next _ row][next _ col]= = 0)/*如果可以去,标记*/

{ maze[next _ row][next _ col]= 2;

findmaze(next_row,next _ col);

if(next _ ROW = =(MAX _ ROW-2)& amp;& ampNext_col==(MAX_COL-2))/*找到退出程序的出口*/

{ print(1);

getch();

退出(0);

}

其他

findpath(next_row,next _ col);/*没有继续递归的出口*/

迷宫[下一行][下一列]= 3;

returnmaze(next_row,next _ col);

}

direct++;

}

返回(行);

}

TC调试好