果移动合法
}
if(flag)//如果人移动合法并完成移动
{
person_x =person_x-1;//进行坐标的交换
person_y = person_y;
}
}
break;
case 'a':
{
if(map[person_x][person_y-1] == '4')//如果人的左面是箱子
{
if(map[person_x][person_y-2]=='2'||map[person_x][person_y-2]=='3')//箱子的左面是空地或目的地
{
map[person_x][person_y-2] = '4';//空地或目的地就变成箱子
map[person_x][person_y-1] = '6';
map[person_x][person_y] = '2';
flag = true;//移动合法
}
}
else if(map[person_x][person_y-1] == '3'||map[person_x][person_y-1] == '2')//如果人左面是目的地或空地
{
map[person_x][person_y-1] = '6';
map[person_x][person_y] = '2';
flag = true;
}
if(flag)//如果"人"移动合法并完成移动
{
person_x =person_x;
person_y = person_y-1;
}
}
break;
case 's':
{
if(map[person_x+1][person_y] == '4')//下面是箱子
{
if(map[person_x+2][person_y]=='2'||map[person_x+2][person_y]=='3')//箱子下面又是空地或目的地
{
map[person_x+2][person_y] = '4';//目的地或空地变成箱子
map[person_x+1][person_y] = '6';//箱子原来的位置变换成人
map[person_x][person_y] = '2';//人的原来位置变为空地
flag = true;//移动合法
}
}
else if(map[person_x+1][person_y] == '3'||map[person_x+1][person_y] == '2')//人的下面是目的地或空地
{
map[person_x+1][person_y] = '6';
map[person_x][person_y] = '2';
flag = true;
}
if(flag)//人的移动合法并完成移动
{
person_x =person_x+1;//进行坐标的交换
person_y = person_y;
}
}
break;
case 'd':
{
if(map[person_x][person_y+1] == '4')//如果右面是箱子
{
if(map[person_x][person_y+2]=='2'||map[person_x][person_y+2]=='3')
{
map[person_x][person_y+2] = '4';
map[person_x][person_y+1] = '6';
map[person_x][person_y] = '2';
flag = true;
}
}
else if(map[person_x][person_y+1] == '3'||map[person_x][person_y+1] == '2')//如果"人"右是"空地"或者是"目的地"。
{
map[person_x][person_y+1] = '6';
map[person_x][person_y] = '2';
flag = true;
}
if(flag)//如果"人"移动合法并完成移动
{
person_x =person_x;//则进行"人"坐标的转换
person_y = person_y+1;
}
}
break;
default:
break;
}
int num =0;
for(int forMap =0;forMap<11;forMap++)//让人走过的目的地不会变为空地
{
if(map[goalPlace[num]][goalPlace[num+1]] =='2')//如果目的地是空地
map[goalPlace[num]][goalPlace[num+1]] = '3';//就变回原来的目的地
num+=2;//是一维数组两个来存
目的地坐标的,因此要+2才能读出下一个坐标
}
int number=0;
for(int i=0;i<goal;i++)//计算目的地的个数
{
if(map[goalPlace[number++]][goalPlace[number+1]] != '4')
retu