该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#ifndef __BOX__
#define __BOX__
IMAGE img[5];
int map[9][9] = {
1, 1, 1, 1, 1, 0, 0, 0, 0,
1, 0, 2, 0, 1, 0, 0, 0, 0,
1, 0, 3, 3, 1, 0, 1, 1, 1,
1, 0, 3, 0, 1, 0, 1, 4, 1,
1, 1, 1, 0, 1, 1, 1, 4, 1,
1, 1, 1, 0, 0, 0, 0, 4, 1,
0, 1, 0, 0, 0, 1, 0, 0, 1,
0, 1, 0, 0, 0, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 0, 0, 0,
};
void show_map()
{
int i, j;
putimage(0, 0, &img[0], SRCCOPY);
for (i = 0; i < 9; i++)
{
for (j = 0; j < 9; j++)
{
switch (map[i][j])
{
case 0:
break;
case 1:
putimage(i * 50, j * 50, &img[1], SRCCOPY);
break;
case 2:
putimage(i * 50, j * 50, &img[2], SRCCOPY);
break;
case 3:
putimage(i * 50, j * 50, &img[3], SRCCOPY);
break;
case 4:
putimage(i * 50, j * 50, &img[4], SRCCOPY);
break;
case 6:
putimage(i * 50, j * 50, &img[2], SRCCOPY);
break;
case 7:
putimage(i * 50, j * 50, &img[3], SRCCOPY);
break;
default:
break;
}
}
}
}
void put()
{
int i, j;
int x, y;
for (i = 0; i < 9; i++)
{
for (j = 0; j < 9; j++)
{
y = j;
x = i;
}
}
switch (_getch())
{
case 72://向上
if (map[x - 1][y] == 0 || map[x - 1][y] == 4)//上一行是空地或者目的地可以移动
{
map[x][y] -= 2;
map[x - 1][y] += 2;
}
else
{
if (map[x - 1][y] == 3 || map[x - 1][y] == 7)//人的上方是箱子,箱子可能在空地上也可能在目的地上
{
if (map[x - 2][y] == 0 || map[x - 2][y] == 4)//箱子的上方是空地或者是目的地
{
map[x][y] -= 2;
map[x - 1][y] -= 1;
map[x - 2][y] += 3;
}
}
}
break;
case 80://向下
if (map[x + 1][y] == 0 || map[x + 1][y] == 4)//上一行是空地或者目的地可以移动
{
map[x][y] -= 2;
map[x + 1][y] += 2;
}
else
{
if (map[x + 1][y] == 3 || map[x + 1][y] == 7)//人的上方是箱子,箱子可能在空地上也可能在目的地上
{
if (map[x + 2][y] == 0 || map[x + 2][y] == 4)//箱子的上方是空地或者是目的地
{
map[x][y] -= 2;
map[x + 1][y] -= 1;
map[x + 2][y] += 3;
}
}
}
break;
case 75://向左
if (map[x][y - 1] == 0 || map[x][y - 1] == 4)//上一行是空地或者目的地可以移动
{
map[x][y] -= 2;
map[x][y - 1] += 2;
}
else
{
if (map[x][y - 1] == 3 || map[x][y - 1] == 7)//人的上方是箱子,箱子可能在空地上也可能在目的地上
{
if (map[x][y - 2] == 0 || map[x][y - 2] == 4)//箱子的上方是空地或者是目的地
{
map[x][y] -= 2;
map[x][y - 1] -= 1;
map[x][y - 2] += 3;
}
}
}
break;
case 77://向右
if (map[x][y + 1] == 0 || map[x][y + 1] == 4)//上一行是空地或者目的地可以移动
{
map[x][y] -= 2;
map[x][y + 1] += 2;
}
else
{
if (map[x][y + 1] == 3 || map[x][y + 1] == 7)//人的上方是箱子,箱子可能在空地上也可能在目的地上
{
if (map[x][y + 2] == 0 || map[x][y + 2] == 4)//箱子的上方是空地或者是目的地
{
map[x][y] -= 2;
map[x][y + 1] -= 1;
map[x][y + 2] += 3;
}
}
}
break;
default:
break;
}
}
#endif