#include <stdio.h>
#include <getch.h>
#include <stdlib.h>
int main(int argc,const char* argv[])
{
char map[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(map[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步\n",step);
return 0;
}
int x,y;
switch(getch())
{
case 183:x=-1;y=0;break;
case 184:x=1;y=0;break;
case 185:x=0;y=1;break;
case 186:x=0;y=-1;break;
}
if(0 == map[m_x+x][m_y+y] || 4 == map[m_x+x][m_y+y])
{
map[m_x+x][m_y+y] += 2;
map[m_x][m_y] -= 2;
m_y=m_y+y;m_x=m_x+x; step++;
}
else if(3 == map[m_x+x][m_y+y] || 7 == map[m_x+x][m_y+y])
{
if(0 == map[m_x+x*2][m_y+2*y] || 4 == map[m_x+x*2][m_y+2*y])
{
map[m_x+2*x][m_y+2*y] += 3;
map[m_x+x][m_y+y] -= 1;
map[m_x][m_y] -= 2;
m_y=m_y+y;m_x=m_x+x; step++;
}
}
}
}
优化后的推箱子
最新推荐文章于 2022-07-11 22:13:26 发布