#include <stdio.h> //标准输入输出头文件
#include <stdlib.h> //system函数的头文件
#include <conio.h> //getch函数的头文件
char move(char t,int map[9][10])
{int i,j,x,y;
system("CLS"); //清屏
for(i=0;i<9;i++) // 查找当前人位置!!!!!!!!!!!
{
for(j=0;j<10;j++)
if(map[i][j]==4 || map[i][j]==6)
{
x=i,y=j;
};
}
switch(t)
{case 'w':
{ if(map[x-1][y]==1)//如果人面前时路
{map[x-1][y]=4;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else
if(map[x-1][y]==3)//人面前是箱子
{if(map[x-2][y]==2)// 人前箱子 箱子前面是空位
{map[x-1][y]=4;map[x-2][y]=5;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else
if(map[x-2][y]==0 || map[x-2][y]==3 || map[x-2][y]==5)//人前是箱子 箱子前面是墙 箱子 已在空位上的箱子
{printf("\a");}
else if(map[x-2][y]==1)// 人前是箱子 箱子前面是路
{map[x-1][y]=4;map[x-2][y]=3;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;};}
else if(map[x-1][y]==0) //人前是墙
{printf("\a");}
else if(map[x-1][y]==2)
{map[x-1][y]=6;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else if(map[x-1][y]==5)//人前是已在空位的箱子
{if(map[x-2][y]==2)//人前是已在空位是的箱子 箱子前是一个空位
{map[x-1][y]=6;map[x-2][y]=5;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else if(map[x-2][y]==0 || map[x-2][y]==3 || map[x-2][y]==5)//人前是已在空位是的箱子 箱子前是墙 箱子 已在空位上的箱子
{printf("\a");}
else if(map[x-2][y]==1)//人前是已在空位上的箱子 箱子前是路
{map[x-1][y]=6;map[x-2][y]=3;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;};};
};break;
case 'd':
{ if(map[x][y+1]==1)//如果人面前时路
{map[x][y+1]=4;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else
if(map[x][y+1]==3)//人面前是箱子
{if(map[x][y+2]==2)// 人前箱子 箱子前面是空位s
{map[x][y+1]=4;map[x][y+2]=5;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else
if(map[x][y+2]==0 || map[x][y+2]==3 || map[x][y+2]==5)//人前是箱子 箱子前面是墙 箱子 已在空位上的箱子
{printf("\a");}
else if(map[x][y+2]==1)// 人前是箱子 箱子前面是路
{map[x][y+1]=4;map[x][y+2]=3;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;};}
else if(map[x][y+1]==0) //人前是墙
{printf("\a");}
else if(map[x][y+1]==2)
{map[x][y+1]=6;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else if(map[x][y+1]==5)//人前是已在空位的箱子
{if(map[x][y+2]==2)//人前是已在空位是的箱子 箱子前是一个空位
{map[x][y+1]=6;map[x][y+2]=5;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else if(map[x][y+2]==0 || map[x][y+2]==3 || map[x][y+2]==5)//人前是已在空位是的箱子 箱子前是墙 箱子 已在空位上的箱子
{printf("\a");}
else if(map[x][y+2]==1)//人前是已在空位上的箱子 箱子前是路
{map[x][y+1]=6;map[x][y+2]=3;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;};};
};break;
case 's':
{ if(map[x+1][y]==1)//如果人面前时路
{map[x+1][y]=4;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else
if(map[x+1][y]==3)//人面前是箱子
{if(map[x+2][y]==2)// 人前箱子 箱子前面是空位
{map[x+1][y]=4;map[x+2][y]=5;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else
if(map[x+2][y]==0 || map[x+2][y]==3 || map[x+2][y]==5)//人前是箱子 箱子前面是墙 箱子 已在空位上的箱子
{printf("\a");}
else if(map[x+2][y]==1)// 人前是箱子 箱子前面是路
{map[x+1][y]=4;map[x+2][y]=3;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;};}
else if(map[x+1][y]==0) //人前是墙
{printf("\a");}
else if(map[x+1][y]==2)
{map[x+1][y]=6;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else if(map[x+1][y]==5)//人前是已在空位的箱子
{if(map[x+2][y]==2)//人前是已在空位是的箱子 箱子前是一个空位
{map[x+1][y]=6;map[x+2][y]=5;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else if(map[x+2][y]==0 || map[x+2][y]==3 || map[x+2][y]==5)//人前是已在空位是的箱子 箱子前是墙 箱子 已在空位上的箱子
{printf("\a");}
else if(map[x+2][y]==1)//人前是已在空位上的箱子 箱子前是路
{map[x+1][y]=6;map[x+2][y]=3;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;};};
};break;
case 'a':
{ if(map[x][y-1]==1)//如果人面前时路
{map[x][y-1]=4;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else
if(map[x][y-1]==3)//人面前是箱子
{if(map[x][y-2]==2)// 人前箱子 箱子前面是空位
{map[x][y-1]=4;map[x][y-2]=5;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else
if(map[x][y-2]==0 || map[x][y-2]==3 || map[x][y-2]==5)//人前是箱子 箱子前面是墙 箱子 已在空位上的箱子
{printf("\a");}
else if(map[x][y-2]==1)// 人前是箱子 箱子前面是路
{map[x][y-1]=4;map[x][y-2]=3;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;};}
else if(map[x][y-1]==0) //人前是墙
{printf("\a");}
else if(map[x][y-1]==2)
{map[x][y-1]=6;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else if(map[x][y-1]==5)//人前是已在空位的箱子
{if(map[x][y-2]==2)//人前是已在空位是的箱子 箱子前是一个空位
{map[x][y-1]=6;map[x][y-2]=5;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;}
else if(map[x][y-2]==0 || map[x][y-2]==3 || map[x][y-2]==5)//人前是已在空位是的箱子 箱子前是墙 箱子 已在空位上的箱子
{printf("\a");}
else if(map[x][y-2]==1)//人前是已在空位上的箱子 箱子前是路
{map[x][y-1]=6;map[x][y-2]=3;
if(map[x][y]==4) map[x][y]=1;
else map[x][y]=2;};};
};break;}
map1(map);
return 0;
}
/****************显示地图*************/
int map1(int a[9][10])
{
int i,j;
static int count=0;
// static 说明变量存储在计算机中的静态存储区中
// 且该变量在程序执行期间占用的内存不会被释放
// 且该变量不可被其他文件调用
//system("cls"); //刷新
printf("\n\n\t\t\t 欢迎选玩*【推箱子游戏】O(∩_∩)O~~~ \n\n\t\t\t\t\t 游戏规则: \n\t\t □:代表墙 ×:代表路 ○:代表空位\n\t\t ●:代表箱子 ♀:代表人 ※:代表箱子已在空�