网站首页 网站地图
网站首页 > 电商创业 > 推箱子c语言代码

推箱子c语言代码

时间:2026-03-20 14:06:18

```c

include

include

include

include

define WIDTH 8

define HEIGHT 8

int map[HEIGHT][WIDTH] = {

{0, 0, 1, 1, 1, 0, 0, 0},

{0, 0, 1, 4, 1, 0, 0, 0},

{0, 0, 1, 0, 1, 1, 1, 1},

{1, 1, 1, 3, 0, 3, 4, 1},

{1, 4, 0, 3, 2, 1, 1, 1},

{1, 1, 1, 1, 3, 1, 0, 0},

{0, 0, 0, 1, 4, 1, 0, 0},

{0, 0, 0, 1, 1, 1, 0, 0}

};

void drawMap() {

for (int i = 0; i < HEIGHT; i++) {

for (int j = 0; j < WIDTH; j++) {

switch (map[i][j]) {

case 0: printf(" "); break;

case 1: printf(" "); break;

case 2: printf("@ "); break;

case 3: printf("X "); break;

case 4: printf("D "); break;

}

}

printf("\n");

}

}

int main() {

int x = 1, y = 1; // 人的起始位置

int box_x = 3, box_y = 3; // 箱子的起始位置

int direction = ' '; // 存储键盘按的方向

while (1) {

system("cls"); // 清屏

drawMap(); // 绘制地图

switch (direction) {

case 'w': y--; break;

case 'a': x--; break;

case 's': y++; break;

case 'd': x++; break;

}

if (map[y][x] == 1) { // 如果撞到墙

printf("Game Over!\n");

return 0;

}

if (map[y][x] == 2) { // 如果撞到人

printf("Game Over!\n");

return 0;

}

if (map[y][x] == 3) { // 如果到达目的地

printf("You Win!\n");

return 0;

}

if (map[box_y][box_x] == 0) { // 如果箱子可以移动到

map[box_y][box_x] = 4; // 标记箱子已移动

map[y][x] = 3; // 人移动到箱子原来的位置

box_x = x;

box_y = y;

}

Sleep(100); // 暂停

direction = _getch(); // 获取键盘输入

}

return 0;

}

```

请注意,这个代码使用了Windows特定的`system("cls")`和`_getch()`函数。如果你在非Windows系统上编译和运行,可能需要替换这些函数。例如,在Linux上,你可以使用`system("clear")`代替`system("cls")`,使用`getchar()`代替`_getch()`。

这个代码示例提供了一个基本的推箱子游戏框架,你可以在此基础上添加更多功能,比如更复杂的移动逻辑、不同的游戏级别、图形界面等。