Vc++6.0环境下可以运行的迷宫游戏代码。
#包括
#包括
#定义M 10 //行数
#定义N 10 //列数
int计数;//记录迷宫方块的数量。
int Data[M][N];//存储二维迷宫数组。
使用命名空间std
Typedef struct _element //定义迷宫点阵的数据结构类型。
{
int x,y;
int方向;//方向1:下2:右3:上4:左
}元素,* pelement
Void ReadData() //从文件中读取迷宫数据。
{
ifstream ifs("a.txt ",IOs::in);
for(int I = 0;我& ltm;i++)
{
for(int j = 0;j & ltn;j++)
{
ifs & gt& gt数据[I][j];
cout & lt& ltdata[I][j]& lt;& lt" ";
}
cout & lt& ltendl
}
}
Void CalculatePath(pelement p) //计算出路
{
int i=0,j=0,BZ = 1;
count = 0;//记录迷宫中方块的数量。
p[0]。x = 0;//(0,0)是入口地址。
p[0]。y = 0;
p[0]。方向= 1;
while (1)
{
if(I = = 9 & amp;& ampj==9)破;//(9,9)是出口地址。
else if(count & lt;0){ cout & lt;& lt“迷宫是没有出路的!”& lt& ltendl打破;}
while(p[计数]。方向& lt=4)
{
if(count & gt;0 & amp& ampABS(p[计数]。方向-p[计数-1]。方向)==2)
{
p[计数]。方向++;
继续;
}
if(p[计数]。方向==1)
{
I = I+1;
if((i9)||Data[i][j]==0)
{
I = I-1;
p[计数]。方向++;
继续;
}
其他
{
count++;
p[计数]。x = I;
p[计数]。y = j;
p[计数]。方向= 1;
打破;
}
}
else if (p[count].方向==2)
{
j = j+1;
if((j9)||Data[i][j]==0)
{
j = j-1;
p[计数]。方向++;
继续;
}
其他
{
count++;
p[计数]。x = I;
p[计数]。y = j;
p[计数]。方向= 1;
打破;
}
}
else if (p[count].方向==3)
{
I = I-1;
if((i9)||Data[i][j]==0)
{
I = I+1;
p[计数]。方向++;
继续;
}
其他
{
count++;
p[计数]。x = I;
p[计数]。y = j;
p[计数]。方向= 1;
打破;
}
}
else if (p[count].方向==4)
{
j = j-1;
if((j9)||Data[i][j]==0)
{
j = j+1;
p[计数]。方向++;
继续;
}
其他
{
count++;
p[计数]。x = I;
p[计数]。y = j;
p[计数]。方向= 1;
打破;
}
}
}
if(p[计数]。方向& gt4)
{
count-;
I = p[计数]。x;
j = p[计数]。y;
p[计数]。方向++;
}
}
}
Void OutPath(pelement p) //输出所采用的迷宫路径。
{
cout & lt& lt" x坐标" < & lt" y坐标" < & lt"方向:"
for(int I = 0;我& lt数数;i++)
{
cout & lt& ltp[i]。x & lt& lt" " " & lt& ltp[i]。y & lt& lt" ";
如果(p[i]。direction = = 1)cout & lt;& lt“向下”
else if(p[i].direction = = 2)cout & lt;& lt“对”
else if(p[i].direction = = 3)cout & lt;& lt"向上"
else cout & lt& lt“左”
}
cout & lt& ltp[计数]。x & lt& lt" " " & lt& ltp[计数]。y & lt& lt" " " & lt& lt"退出"
}
void main()
{
元素E[100];
read data();
计算路径(E);
out path(E);
}
实验数据:
1 1 0 0 0 0 0 0 0 0
1 1 1 0 1 1 1 0 1 0
0 1 1 0 1 1 1 0 1 0
0 1 1 1 1 0 0 1 1 0
0 1 0 0 0 1 1 1 1 0
0 1 1 1 0 1 1 1 1 0
0 1 0 1 1 1 0 1 1 0
0 1 0 0 0 1 0 0 1 0
0 0 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 1 1