//定义变量,小人位置,路
int wzX = 1;
int wzY = 1;
int nextwzX = wzX;
int nextwzY = wzY;
char lu = ' ';
char fx =0;
char ch;
int box = 'X';
int boxX = 2;
int boxY = 3;
int nextboxX = boxX;
int nextboxY = boxY;
//进入循环
while (1) {
printf("请控制小人移动:w:上 s:下 a:左 d:右 q:退出\n");
scanf("%c",&fx);
scanf("%c",&ch);
nextwzX = wzX;
nextwzY = wzY;
//进入switch分支,判断方向
switch (fx) {
case 'w':
case 'W':
{
nextwzX--;
break;
}
case 's':
case 'S':
{
nextwzX++;
break;
}
case 'a':
case 'A':
{
nextwzY--;
break;
}
case 'd':
case 'D':
{
nextwzY++;
break;
}
case 'q':
case 'Q':
printf("游戏已退出");
return 0;
default:
continue;
}
// 如果小人要移动的位置是路
if (map[nextwzX][nextwzY] == lu) {
//移动小人位置
Move( map,wzX,wzY,nextwzX,nextwzY);
//从新保存小人位置
wzX = nextwzX;
wzY = nextwzY;
//如果是箱子,就推动箱子
}else if (map[nextwzX][nextwzY] == box){
//计算箱子的下一位置
nextboxX = boxX + (boxX - wzX);
nextboxY = boxY + (boxY - wzY);