#include <stdio.h>
#include <getch.h>
#include <stdlib.h>
int main(int argc ,const char* argv[])
{
char box[8][8] ={
{0,0,1,1,1,1,0,0},
{0,0,1,4,4,1,0,0},
{0,1,1,0,4,1,1,0},
{0,1,0,0,3,4,1,0},
{1,1,0,3,0,0,1,1},
{1,0,0,1,3,3,0,1},
{1,0,0,2,0,0,0,1},
{1,1,1,1,1,1,1,1}
};
char m_x = 6, m_y = 3;
int step = 0;
for(;;)
{
int cnt = 0;
system("clear");
for(int i=0; i<8; i++)
{
for(int j=0; j<8; j++)
{
switch(box[i][j])
{
case 0: printf(" ");break;
case 1: printf("# ");break;
case 2: printf("@ ");break;
case 3: printf("$ ");break;
case 4: printf("O ");break;
case 6: printf("@ ");break;
case 7: printf("$ ");
cnt++;
break;
}
}
printf("\n");
}
if(4 == cnt)
{
printf("游戏结束!共走了%d步",step);
return 0;
}
switch(getch())
{
case 183:
if(0 == box[m_x-1][m_y] || 4 == box[m_x-1][m_y])
{
box[m_x-1][m_y] += 2;
box[m_x][m_y] -= 2;
m_x--;
step++;
}
else if(3 == box[m_x-1][m_y] || 7 == box[m_x-1][m_y])
{
if(0 == box[m_x-2][m_y] || 4 == box[m_x-2][m_y])
{
box[m_x-2][m_y] += 3;
box[m_x-1][m_y] -= 1;
box[m_x][m_y] -= 2;
m_x--;
step++;
}
}
break;
case 184:
if(0 == box[m_x+1][m_y] || 4 == box[m_x+1][m_y])
{
box[m_x+1][m_y] += 2;
box[m_x][m_y] -= 2;
m_x++;
step++;
}
else if(3 == box[m_x+1][m_y] || 7 == box[m_x+1][m_y])
{
if(0 == box[m_x+2][m_y] || 4 == box[m_x+2][m_y])
{
box[m_x+2][m_y] += 3;
box[m_x+1][m_y] -= 1;
box[m_x][m_y] -= 2;
m_x++;
step++;
}
}
break;
case 185:
if(0 == box[m_x][m_y+1] || 4 == box[m_x][m_y+1])
{
box[m_x][m_y+1] += 2;
box[m_x][m_y] -= 2;
m_y++;
step++;
}
else if(3 == box[m_x][m_y+1] || 7 == box[m_x][m_y]+1)
{
if(0 == box[m_x][m_y+2] || 4 == box[m_x][m_y+2])
{
box[m_x][m_y+2] += 3;
box[m_x][m_y+1] -= 1;
box[m_x][m_y] -= 2;
m_y++;
step++;
}
}
break;
case 186:
if(0 == box[m_x][m_y-1] || 4 == box[m_x][m_y-1])
{
box[m_x][m_y-1] += 2;
box[m_x][m_y] -= 2;
m_y--;
step++;
}
else if(3 == box[m_x][m_y-1] || 7 == box[m_x][m_y-1])
{
if(0 == box[m_x][m_y-2] || 4 == box[m_x][m_y-2])
{
box[m_x][m_y-2] += 3;
box[m_x][m_y-1] -= 1;
box[m_x][m_y] -= 2;
m_y--;
step++;
}
}
break;
}
}
}
推箱子(C语言实现)
最新推荐文章于 2023-10-03 09:51:33 发布