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调试好