#include<stdio.h>
#include<string.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include<mmsystem.h>
#include<graphics.h>
#pragma comment(lib,"winmm.lib")
int i,j,x,y,sum,k,m,su=0;
char a[10][10]={
{0,0,1,1,1,0,0,0},
{0,0,1,3,1,0,0,0},
{1,1,1,2,1,1,1,1},
{1,3,2,4,0,2,3,1},
{1,1,1,2,1,1,1,1},
{0,0,1,3,1,0,0,0},
{0,0,1,1,1,0,0,0},
};
int map[5][10][10]={
{
{0,0,1,1,1,0,0,0},
{0,0,1,3,1,0,0,0},
{1,1,1,2,1,1,1,1},
{1,3,2,4,0,2,3,1},
{1,1,1,2,1,1,1,1},
{0,0,1,3,1,0,0,0},
{0,0,1,1,1,0,0,0},
},
{
{1,1,1,1,1,1,1,1},
{1,0,0,1,0,0,0,1},
{1,0,2,3,3,2,0,1},
{1,4,2,3,5,0,0,1},
{1,0,2,3,3,2,0,1},
{1,0,0,1,0,0,0,1},
{1,1,1,1,1,1,1,1},
},
{
{0,0,0,1,1,1,1,0},
{0,1,1,1,0,4,1,0},
{0,1,0,0,2,0,1,0},
{1,1,0,1,0,1,1,1},
{1,0,0,1,0,1,3,1},
{1,0,1,0,0,2,3,1},
{1,0,2,0,0,0,3,1},
{1,1,1,1,1,1,1,1},
},
{
{0,0,1,1,1,1,1,1},
{0,0,1,0,0,0,0,1},
{1,1,1,2,2,2,0,1},
{1,4,0,2,3,3,0,1},
{1,0,2,3,3,3,1,1},
{1,1,1,1,0,0,1,0},
{0,0,0,1,1,1,1,0},
},
{
{0,0,1,1,1,1,1,1,0,0},
{0,0,1,0,0,0,0,1,1,1},
{0,0,1,0,2,0,0,0,0,1},
{1,1,1,0,2,0,1,1,0,1},
{1,3,3,3,0,2,0,0,0,1},
{1,3,3,3,2,1,2,0,1,1},
{1,1,1,1,0,1,0,2,0,1},
{0,0,0,1,0,0,4,0,0,1},
{0,0,0,1,1,1,1,1,1,1},
},
};
void all()//选择地图部分
{
printf("(选完后请按CR进入游戏)\n");
scanf("%d",&m);
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
a[i][j]=map[m-1][i][j];
}
}
}
void comeback()//复位系统(重新开始)
{
sum=0;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
a[i][j]=map[m-1][i][j];
}
}
}
void put()//输出部分
{
for(x=0;x<10;x++)
{
for(y=0;y<10;y++)
{
switch(a[x][y])
{
case 0:printf(" ");break;
case 1:printf("■");break;
case 2:printf("□");break;
case 3:printf("○");break;
case 7:
case 4:printf("+ ");break;
case 5:printf("★");break;}
}
printf("\n");
}
}
void win()//判断输赢部分,计算剩余箱子的个数
{
k=0;
for(i=0;i<10;i++)
{
{
for(j=0;j<10;j++)
if(a[i][j]==2)
k++;
}
}
}
void fine()//每次控制后,重新找到人的位置
{
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(a[i][j]==4||a[i][j]==7)
{
x=i;y=j;
}
}
}
}
//以w,a,s,d控制上,左,下,右
void handleW()
{
if(a[x][y]==4)
{
if(a[x-1][y]==0||a[x-1][y]==3)
{
if(a[x-1][y]==0)
{a[x-1][y]=4;a[x][y]=0;sum++;}
if(a[x-1][y]==3)
{a[x-1][y]=7;a[x][y]=0;sum++;}
}
else
if(a[x-1][y]==2)
{
if(a[x-2][y]==0||a[x-2][y]==3)
{
if(a[x-2][y]==0)
{a[x][y]=0;a[x-1][y]=4;a[x-2][y]=2;sum++;}
if(a[x-2][y]==3)
{a[x][y]=0;a[x-1][y]=4;a[x-2][y]=5;sum++;}
}
}
else
if(a[x-1][y]==5)
{
if(a[x-2][y]==0||a[x-2][y]==3)
{
if(a[x-2][y]==0)
{a[x][y]=0;a[x-1][y]=7;a[x-2][y]=2;sum++;}
if(a[x-2][y]==3)
{a[x][y]=0;a[x-1][y]=7;a[x-2][y]=5;sum++;}
}
}
}
if(a[x][y]==7)
{
if(a[x-1][y]==0||a[x-1][y]==3)
{
if(a[x-1][y]==0)
{a[x-1][y]=4;a[x][y]=3;sum++;}
if(a[x-1][y]==3)
{a[x-1][y]=7;a[x][y]=3;sum++;}
}
else
if(a[x-1][y]==2)
{
if(a[x-2][y]==0||a[x-2][y]==3)
{
if(a[x-2][y]==0)
{a[x][y]=3;a[x-1][y]=4;a[x-2][y]=2;sum++;}
if(a[x-2][y]==3)
{a[x][y]=3;a[x-1][y]=4;a[x-2][y]=5;sum++;}
}
}
else
if(a[x-1][y]==5)
{
if(a[x-2][y]==0||a[x-2][y]==3)
{
if(a[x-2][y]==0)
{a[x][y]=3;a[x-1][y]=7;a[x-2][y]=2;sum++;}
if(a[x-2][y]==3)
{a[x][y]=3;a[x-1][y]=7;a[x-2][y]=5;sum++;}
}
}
}
}
void handleA()
{
if(a[x][y]==4)
{
if(a[x][y-1]==0||a[x][y-1]==3)
{
if(a[x][y-1]==0)
{a[x][y-1]=4;a[x][y]=0;sum++;}
if(a[x][y-1]==3)
{a[x][y-1]=7;a[x][y]=0;sum++;}
}
else
if(a[x][y-1]==2)
{
if(a[x][y-2]==0||a[x][y-2]==3)
{
if(a[x][y-2]==0)
{a[x][y]=0;a[x][y-1]=4;a[x][y-2]=2;sum++;}
if(a[x][y-2]==3)
{a[x][y]=0;a[x][y-1]=4;a[x][y-2]=5;sum++;}
}
}
else
if(a[x][y-1]==5)
{
if(a[x][y-2]==0||a[x][y-2]==3)
{
if(a[x][y-2]==0)
{a[x][y]=0;a[x][y-1]=7;a[x][y-2]=2;sum++;}
if(a[x][y-2]==3)
{a[x][y]=0;a[x][y-1]=7;a[x][y-2]=5;sum++;}
}
}
}
if(a[x][y]==7)
{
if(a[x][y-1]==0||a[x][y-1]==3)
{
if(a[x][y-1]==0)
{a[x][y-1]=4;a[x][y]=3;sum++;}
if(a[x][y-1]==3)
{a[x][y-1]=7;a[x][y]=3;sum++;}
}
else
if(a[x][y-1]==2)
{
if(a[x][y-2]==0||a[x][y-2]==3)
{
if(a[x][y-2]==0)
{a[x][y]=3;a[x][y-1]=4;a[x][y-2]=2;sum++;}
if(a[x][y-2]==3)
{a[x][y]=3;a[x][y-1]=4;a[x][y-2]=5;sum++;}
}
}
else
if(a[x][y-1]==5)
{
if(a[x][y-2]==0||a[x][y-2]==3)
{
if(a[x][y-2]==0)
{a[x][y]=3;a[x][y-1]=7;a[x][y-2]=2;sum++;}
if(a[x][y-2]==3)
{a[x][y]=3;a[x][y-1]=7;a[x][y-2]=5;sum++;}
}
}
}
}
void handleS()
{
if(a[x][y]==4)
{
if(a[x+1][y]==0||a[x+1][y]==3)
{
if(a[x+1][y]==0)
{a[x+1][y]=4;a[x][y]=0;sum++;}
if(a[x+1][y]==3)
{a[x+1][y]=7;a[x][y]=0;sum++;}
}