用c写一个推箱子的游戏代码
时间: 2023-03-19 08:21:10 浏览: 132
推箱子游戏是一个经典的益智游戏,下面是用C语言写一个简单的推箱子游戏的代码:
```
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define WIDTH 10
#define HEIGHT 10
// 地图数据
char map[HEIGHT][WIDTH+1] = {
"##########",
"# #",
"# #",
"# #",
"# #",
"# #",
"# # #",
"# # $ #",
"# # @# #",
"##########"
};
// 人和箱子的位置
int playerX, playerY;
int boxX, boxY;
// 移动函数
void move(int dx, int dy) {
// 计算新位置
int newX = playerX + dx;
int newY = playerY + dy;
int newBoxX = boxX + dx;
int newBoxY = boxY + dy;
// 判断是否可以移动
if(map[newY][newX] == '#') {
return;
}
if(newBoxX < 0 || newBoxX >= WIDTH || newBoxY < 0 || newBoxY >= HEIGHT) {
return;
}
if(map[newBoxY][newBoxX] == '#') {
return;
}
// 移动人和箱子
playerX = newX;
playerY = newY;
boxX = newBoxX;
boxY = newBoxY;
// 更新地图
map[playerY][playerX] = '@';
map[boxY][boxX] = '$';
// 清除原来的位置
map[playerY-dy][playerX-dx] = ' ';
map[boxY-dy][boxX-dx] = ' ';
}
// 显示地图
void showMap() {
for(int i = 0; i < HEIGHT; i++) {
printf("%s\n", map[i]);
}
}
int main() {
// 初始化位置
for(int i = 0; i < HEIGHT; i++) {
for(int j = 0; j < WIDTH; j++) {
if(map[i][j] == '@') {
playerX = j;
playerY = i;
} else if(map[i][j] == '$') {
boxX = j;
boxY = i;
}
}
}
// 显示地图
showMap();
// 循环输入方向并移动
while(1) {
char ch = getch();
switch(ch) {
case 'w':
move(0, -1);
break;
case 's':
move(0, 1);
break;
case 'a':
move(-1, 0);
break;
case 'd':
move(1, 0);
break;
case 'q':
exit(0);
}
// 显示地图
system("cls");
showMap();
// 判断是否胜利
if(map[boxY-1][boxX] == '$' && map[boxY][boxX-1] == '$' && map[boxY-1][boxX-1] == '#') {
printf("You win!\n");
break;
}
}
return 0;
}