迷宫生成java源代码 java实现迷宫程序( 三 )


for(i=0;i=Height+1;i++) //边界处理把最开始默认为路的堵上,以免跑出迷宫
{
map[i][0]=Wall;
map[i][Width+1]=Wall;
}
for(j=0;j=Width+1;j++) //边界处理
{
map[0][j]=Wall;
map[Height+1][j]=Wall;
}
map[2][1]=Start; //给定入口
map[Height-1][Width]=End; //给定出口
for(i=1;i=Height;i++)//i初始为1,结束为height,以免画出外围
for(j=1;j=Width;j++) //画出迷宫同上
display(i,j);
}
void Wanjia::game()
{
int x=2,y=1; //玩家当前位置,刚开始在入口处
int c; //用来接收按键
while(1)
{
gotoxy(2*y-2,x-1);
cout"☆"; //画出玩家当前位置
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(30,24);//到达此坐标
cout"到达终点,按任意键结束";
getch();
break;
c=getch();
}
if(c!=-32)
{
c=getch();
switch(c)
{
case 72: //向上走
if(map[x-1][y]!=Wall)
{
display(x,y);
x--;
}
break;
case 80: //向下走
if(map[x+1][y]!=Wall)
{
display(x,y);
x++;
}
break;
case 75: //向左走
if(map[x][y-1]!=Wall)
{
display(x,y);
y--;
}
break;
case 77: //向右走
if(map[x][y+1]!=Wall)
{
display(x,y);
y++;
}
break;
case 112://按下P
gonglue(2,1);break;//如果按下P执行攻略函数
}
}
}
}
void Wanjia::shang(int x,int y)
{
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(52,20);//到达此坐标
cout"到达终点,按任意键结束";
getch();
exit(0);
}
if(map[x-1][y]!=Wallmap[x-1][y]!=upmap[x-1][y]!=downmap[x-1][y]!=leftmap[x-1][y]!=rightmap[x-1][y]!=flag)
{//当移动后的下一个位置没有被走过且不是墙
map[x][y]=up;
display(x,y);
x--;
gonglue(x,y);//递归 , 攻略下一个点
}
}
void Wanjia::xia(int x,int y)
{
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(52,20);//到达此坐标
cout"到达终点,按任意键结束";
getch();
exit(0);
}
if(map[x+1][y]!=Wallmap[x+1][y]!=upmap[x+1][y]!=downmap[x+1][y]!=leftmap[x+1][y]!=rightmap[x+1][y]!=flag) //当移动后的下一个位置没有被走过且不是墙
{
map[x][y]=down;
display(x,y);
x++;
gonglue(x,y);//递归,攻略下一个点
}
}
void Wanjia::zuo(int x,int y)
{
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(52,20);//到达此坐标
cout"到达终点,按任意键结束";
getch();
exit(0);
}
if(map[x][y-1]!=Wallmap[x][y-1]!=upmap[x][y-1]!=downmap[x][y-1]!=leftmap[x][y-1]!=rightmap[x][y-1]!=flag) //当移动后的下一个位置没有被走过且不是墙
{
map[x][y]=left;
display(x,y);
y--;
gonglue(x,y); //递归,攻略下一个点
}
}
void Wanjia::you(int x,int y)
{
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(52,20);//到达此坐标
cout"到达终点,按任意键结束";
getch();
exit(0);
}
if(map[x][y+1]!=Wallmap[x][y+1]!=upmap[x][y+1]!=downmap[x][y+1]!=leftmap[x][y+1]!=rightmap[x][y+1]!=flag) //当移动后的下一个位置没有被走过且不是墙
{
map[x][y]=right;
display(x,y);
y++;
gonglue(x,y); //递归,攻略下一个点
}
}
void Wanjia::gonglue (int x,int y)
{
gotoxy(2*y-2,x-1);
cout"☆"; //画出玩家当前位置
if(map[x][y]==End) //判断是否到达出口
{
gotoxy(52,20);//到达此坐标
cout"到达终点,按任意键结束";

推荐阅读