#include <stdio.h>
#include <stdlib.h>
#include <getch.h>
int main()
{
char arr[8][8] = {
{0,0,1,1,1,1,0,0},
{0,0,1,0,0,1,1,1},
{1,1,1,0,0,0,0,1},
{1,0,0,6,4,1,0,1},
{1,0,0,2,6,0,0,1},
{1,1,1,0,3,1,1,1},
{0,0,1,0,0,1,0,0},
{0,0,1,1,1,1,0,0},
};
char bx = 5 , by = 4;
for(;;)
{
int cnt = 0;
system("clear");
for(int x=0; x<8; x++)
{
for(int y=0; y<8; y++)
{
switch(arr[x][y])
{
case 0: printf(" "); break;
case 1: printf("#"); break;
case 2: printf("O"); break;
case 3: printf("@"); break;
case 4: printf("X"); break;
case 6: printf("O"); break;
case 7: printf("@"); break;
}
if(6 == arr[x][y])
{
cnt++;
}
}
printf("\n");
}
if(3 == cnt)
{
printf("恭喜完成任务!\n");
return 0;
}
switch(getch())
{
case 183:
if((2 == arr[bx-1][by] || 6 == arr[bx-1][by]) && (0==arr[bx-2][by] || 4==arr[bx-2][by]))
{
arr[bx-2][by] += 2;
arr[bx-1][by] -= 2;
arr[bx--][by] -= 3;
arr[bx][by] += 3;
}
if(0 == arr[bx-1][by] || 4 == arr[bx-1][by])
{
arr[bx--][by] -= 3;
arr[bx][by] += 3;
}
break;
case 184:
if((2 == arr[bx+1][by] || 6 == arr[bx+1][by]) && (0==arr[bx+2][by] || 4==arr[bx+2][by]))
{
arr[bx+2][by] += 2;
arr[bx+1][by] -= 2;
arr[bx++][by] -= 3;
arr[bx][by] += 3;
}
if(0 == arr[bx+1][by] || 4 == arr[bx+1][by])
{
arr[bx++][by] -= 3;
arr[bx][by] += 3;
}
break;
case 185:
if((2 == arr[bx][by+1] || 6 == arr[bx][by+1]) && (0==arr[bx][by+2] || 4==arr[bx][by+2]))
{
arr[bx][by+2] += 2;
arr[bx][by+1] -= 2;
arr[bx][by++] -= 3;
arr[bx][by] += 3;
}
if(0 == arr[bx][by+1] || 4 == arr[bx][by+1])
{
arr[bx][by++] -= 3;
arr[bx][by] += 3;
}
break;
case 186:
if((2 == arr[bx][by-1] || 6 == arr[bx][by-1]) && (0==arr[bx][by-2] || 4==arr[bx][by-2]))
{
arr[bx][by-2] += 2;
arr[bx][by-1] -= 2;
arr[bx][by--] -= 3;
arr[bx][by] += 3;
}
if(0 == arr[bx][by-1] || 4 == arr[bx][by-1])
{
arr[bx][by--] -= 3;
arr[bx][by] += 3;
}
break;
}
}
}