linux推箱子代码
时间: 2023-10-30 22:03:13 浏览: 100
以下是一个简单的Linux推箱子(Sokoban)游戏的代码示例:
```
#include <stdio.h>
/*
地图示例:
##########
# #
# .@ #
# #
##########
其中 '#' 表示墙壁,' ' 表示空地,'.' 表示目标点,'@' 表示玩家。
*/
int main() {
int playerX = 3; // 玩家的初始位置
int playerY = 2;
char map[5][10] = {
"##########",
"# #",
"# .@ #",
"# #",
"##########"
};
while (1) {
// 打印地图
for (int row = 0; row < 5; row++) {
for (int col = 0; col < 10; col++) {
printf("%c", map[row][col]);
}
printf("\n");
}
// 移动玩家
char move;
printf("请输入移动方向:(w-上, s-下, a-左, d-右, q-退出)\n");
scanf(" %c", &move);
if (move == 'q') {
break;
} else if (move == 'w' && map[playerY-1][playerX] != '#') { // 上移
map[playerY][playerX] = ' ';
playerY--;
} else if (move == 's' && map[playerY+1][playerX] != '#') { // 下移
map[playerY][playerX] = ' ';
playerY++;
} else if (move == 'a' && map[playerY][playerX-1] != '#') { // 左移
map[playerY][playerX] = ' ';
playerX--;
} else if (move == 'd' && map[playerY][playerX+1] != '#') { // 右移
map[playerY][playerX] = ' ';
playerX++;
}
// 判断是否游戏结束
if (map[playerY][playerX] == '.') {
printf("胜利!\n");
break;
}
// 更新玩家位置
map[playerY][playerX] = '@';
}
return 0;
}
```
这个程序使用一个二维字符数组来表示游戏地图,玩家通过输入移动方向来控制玩家在地图上移动。玩家需要将箱子推到目标点上以获得胜利。输入 'w' 表示向上移动,'s' 表示向下移动,'a' 表示向左移动,'d' 表示向右移动,输入 'q' 表示退出游戏。当玩家成功将箱子推到目标点时,游戏结束并打印"胜利!"。
阅读全文