推箱子
#include
int bjyzawpd(int i,int j,int x[22][22])
{
if(x[i][j]==0||x[i][j]==1)return 1;
else return 0;
}/*?ß?çÓëÕÏ?,ÎïÅÐ?Ï(??Î?)*/
void dtbjcsh(int x[22][22])
{
int a,b;
for(a=0,b=0;a<22;a++)
x[a][b]=9;
for(a=0,b=0;a<22;a++)
x[b][a]=9;
for(a=22-1,b=22-1;a>=0;a--)
x[a][b]=9;
for(a=22-1,b=22-1;a>=0;a--)
x[b][a]=9;
}/*µØÍ??ß?ç?õÊ???*/
int xywczpd(char m,int i,int j,int x[22][22]) {
switch(m){
case 'w':i-=1;if(x[i][j]==9)return 0;else if(((x[i][j]==2)+(x[i][j]==3))*(x[i-1][j]>1)) return 0;else return
1;
case 'a':j-=1;if(x[i][j]==9)return 0;else if(((x[i][j]==2)+(x[i][j]==3))*(x[i][j-1]>1)) return 0;else if(x[i][j]==3&&x[i][j-1]>1)return 0;else return 1;
case 's':i+=1;if(x[i][j]==9)return 0;else if(((x[i][j]==2)+(x[i][j]==3))*(x[i+1][j]>1)) return 0;else if(x[i][j]==3&&x[i+1][j]>1)return 0;else return 1;
case 'd':j+=1;if(x[i][j]==9)return 0;else if(((x[i][j]==2)+(x[i][j]==3))*(x[i][j+1]>1)) return 0;else if(x[i][j]==3&&x[i][j+1]>1)return 0;else return 1;
case '\n':return 0;
default:return 1;
}
}/*ÏÂÒ?Î??Ù×?ÅÐ?Ï(ÏÂÒ?Î?)*/
void ditu1(int x[22][22])
{
int y[22][22]={0};
int i,j;
for(i=0;i<22;i++)
for(j=0;j<22;j++)
y[i][j]=9;
y[8][8]=1;
y[8][9]=1;
y[8][10]=1;
y[9][9]=2;
y[9][10]=0;
y[10][9]=0;
y[10][10]=0;
y[11][8]=0;
y[11][9]=2;
y[11][10]=2;
y[11][11]=0;
y[12][8]=0;
y[12][9]=0;
y[12][10]=0;
y[13][8]=0;
y[13][9]=0;
for(i=0;i<22;i++)
{
for(j=0;j<22;j++)
{
x[i][j]+=y[i][j];
if(x[i][j]>9) x[i][j]=9;
if(x[i][j]!=0)
printf("%2d",x[i][j]);
else printf(" ");
}
printf("\n");
}
}/*µØÍ??,1*/
void ditu2(int x[22][22])
{
int y[22][22]={0};
int i,j;
for(i=0;i<22;i++)
for(j=0;j<22;j++)
y[i][j]=9;
y[8][8]=0;
y[8][9]=0;
y[8][10]=0;
y[9][8]=1;
y[9][9]=0;
y[9][10]=2;
y[10][8]=1;
y[10][9]=0;
y[10][10]=0;
y[10][11]=0;
y[10][12]=0;
y[11][9]=2;
y[11][10]=0;
y[11][11]=9;
y[11][12]=0;
y[12][9]=0;
y[12][10]=0;
y[12][11]=0;
y[12][12]=0;
for(i=0;i<22;i++)
{
for(j=0;j<22;j++)
{
x[i][j]+=y[i][j];
if(x[i][j]>9) x[i][j]=9;
if(x[i][j]!=0)
printf("%2d",x[i][j]);
else printf(" ");
}
printf("\n");
}
}/*µØÍ??,2*/
void main()
{
int x[22][22]={0};
int i,j,k,l,pd=0,dt;
char m;
dtbjcsh(x);
xuantu :;
printf("ÇëÑ?ÔñµØÍ?1?,2\n");
scanf("%d",&dt);
switch(dt){
case 1:ditu1(x);break;
case 2:ditu2(x);break;
default:printf("Ã?ÓÐÕâÍ?");goto xuantu;
}
scanf("%d%d",&i,&j);
if(bjyzawpd(i,j,x))
{
x[i][j]=5;
while(1)
{
for(k=0,dt=0;k<22;k++)
{
for(l=0;l<22;l++)
{
if(x[k][l]!=0)
printf("%2d",x[k][l]);
else printf(" ");
if((x[k][l]==1)||(x[k][l]==2)||(x[k][l]==6)) dt++;
}
printf("\n");
}
if(dt==0) {printf("ÄãÓ?À?");goto xxx;}
printf("wsadÉÏÏÂ×óÓÒ??ÆäËü?áÊø??\n");
xxxx:;
scanf("%c",&m);
if(m==10) goto xxxx;
if(xywczpd(m,i,j,x))
{
switch(m){
case 'w':x[i][j]-=5;i-=1;x[i][j]+=5;if(x[i][j]==7) {x[i][j]=5;x[i-1][j]+=2;}if(x[i][j]==8){x[i][j]=6;x[i-1][j]+=2;}break;
case 'a':x[i][j]-=5;j-=1;x[i][j]+=5;if(x[i][j]==7) {x[i][j]=5;x[i][j-1]+=2;}if(x[i][j]==8){x[i][j]=6;x[i][j-1]+=2;}break;
case 's':x[i][j]-=5;i+=1;x[i][j]+=5;if(x[i][j]==7) {x[i][j]=5;x[i+1][j]+=2;}if(x[i][j]==8){x[i][j]=6;x[i+1][j]+=2;}break;
case 'd':x[i][j]-=5;j+=1;x[i][j]+=5;if(x[i][j]==7) {x[i][j]=5;x[i][j+1]+=2;}if(x[i][j]==8){x[i][j]=6;x[i][j+1]+=2;}br
eak;
case '\n':goto xxxx;
default:printf("over!");goto xxx;
}
}
system("cls");
}
}
else
{
printf("???ö?ß?ç??over!");
goto xxx;
}
xxx:printf("\n");
}/*?Ù×?ÓëÍ?ÐÎ?çÃæ*/