#include <stdio.h>
#include <stdlib.h>
#include <getch.h>
int main()
{
int mg[8][8]={0,0,1,1,1,1,0,0,
0,0,1,2,2,1,0,0,
0,1,1,0,2,1,1,0,
0,1,0,0,3,2,1,0,
1,1,0,3,0,0,1,1,
1,0,0,1,3,3,0,1,
1,0,0,4,0,0,0,1,
1,1,1,1,1,1,1,1};
int xrx=6,xry=3;
int bs=0;
int wcx=0;
while(3!=wcx)
{
system("clear");
for(int i=0;i<8;i++) //" "表示空地,"X"表示墙,"."表示箱子该推到的位置,"
//N"表示箱子,"*"表示人物,"O"表示箱子推到的位置
{
for(int j=0;j<8;j++)
{
if(0==mg[i][j])
{
printf(" ");
}
if(1==mg[i][j])
{
printf("X");
}
if(2==mg[i][j])
{
printf(".");
}
if(3==mg[i][j])
{
printf("N");
}
if(4==mg[i][j])
{
printf("*");
}
if(5==mg[i][j])
{
printf("O");
wcx++;
}
if(6==mg[i][j])
{
printf("*");
}
}
printf("\n");
}
printf("步数:%d",bs);
if(wcx==4)
{
printf("\n恭喜通关!");
return 0;
}
wcx=0;
int key = getch();
printf("%d\n",key);
switch(key)
{
case 186:
if(mg[xrx][xry-1]==0 || mg[xrx][xry-1]==2)
{
mg[xrx][xry]-=4;
mg[xrx][--xry]+=4;
bs++;
}
else if(mg[xrx][xry-1]==3 && mg[xrx][xry-2]==0 || mg[xrx][xry-2]==2)
{
mg[xrx][xry]-=4;
mg[xrx][--xry]+=1;
mg[xrx][xry-1]+=3;
bs++;
}
else if(mg[xrx][xry-1]==5 && mg[xrx][xry-2]==2)
{
mg[xrx][xry]-=4;
mg[xrx][--xry]+=1;
mg[xrx][xry-1]+=3;
bs++;
}
break;
case 185:
if(mg[xrx][xry+1]==0 || mg[xrx][xry+1]==2)
{
mg[xrx][xry]-=4;
mg[xrx][++xry]+=4;
bs++;
}
else if(mg[xrx][xry+1]==3 && mg[xrx][xry+2]==0 || mg[xrx][xry+2]==2)
{
mg[xrx][xry]-=4;
mg[xrx][++xry]+=1;
mg[xrx][xry+1]+=3;
bs++;
}
else if(mg[xrx][xry+1]==5 && mg[xrx][xry+2]==2)
{
mg[xrx][xry]-=4;
mg[xrx][++xry]+=1;
mg[xrx][xry+1]+=3;
bs++;
}
break;
case 183:
if(mg[xrx-1][xry]==0 || mg[xrx-1][xry]==2)
{
mg[xrx][xry]-=4;
mg[--xrx][xry]+=4;
bs++;
}
else if(mg[xrx-1][xry]==3 && mg[xrx-2][xry]==0 || mg[xrx-2][xry]==2)
{
mg[xrx][xry]-=4;
mg[--xrx][xry]+=1;
mg[xrx-1][xry]+=3;
bs++;
}
else if(mg[xrx-1][xry]==5 && mg[xrx-2][xry]==2)
{
mg[xrx][xry]-=4;
mg[--xrx][xry]+=1;
mg[xrx-1][xry]+=3;
bs++;
}
break;
case 184:
if(mg[xrx+1][xry]==0 || mg[xrx+1][xry]==2)
{
mg[xrx][xry]-=4;
mg[++xrx][xry]+=4;
bs++;
}
else if(mg[xrx+1][xry]==3 && mg[xrx+2][xry]==0 || mg[xrx+2][xry]==2)
{
mg[xrx][xry]-=4;
mg[++xrx][xry]+=1;
mg[xrx+1][xry]+=3;
bs++;
}
else if(mg[xrx+1][xry]==5 && mg[xrx+2][xry]==2)
{
mg[xrx][xry]-=4;
mg[++xrx][xry]+=1;
mg[xrx+1][xry]+=3;
bs++;
}
break;
}
}
}
c 推箱子
最新推荐文章于 2024-01-16 18:28:16 发布