Vc++6.0环境下可以运行的迷宫游戏代码。

这由“1”表示:

#包括

#包括

#定义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