用c语言写一个推箱子代码
时间: 2024-01-29 14:02:15 浏览: 85
C语言编写的推箱子代码
以下是一个简单的推箱子游戏的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define ROW 10 // 地图行数
#define COL 10 // 地图列数
#define WALL '#' // 墙
#define BOX '$' // 箱子
#define DEST 'O' // 目的地
#define MAN '@' // 人
char map[ROW][COL] = { // 地图
"##########",
"# #",
"# $ #",
"# $ #",
"# $ #",
"# O #",
"# #",
"# @ #",
"# #",
"##########"
};
int man_row = 7; // 人所在的行
int man_col = 8; // 人所在的列
void show_map() { // 显示地图
int i, j;
system("cls"); // 清屏
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%c", map[i][j]);
}
printf("\n");
}
}
void move_man(int row_offset, int col_offset) { // 移动人
int new_row = man_row + row_offset;
int new_col = man_col + col_offset;
if (map[new_row][new_col] == WALL) { // 遇到墙
return;
}
if (map[new_row][new_col] == BOX) { // 遇到箱子
int new_box_row = new_row + row_offset;
int new_box_col = new_col + col_offset;
if (map[new_box_row][new_box_col] == WALL || map[new_box_row][new_box_col] == BOX) { // 箱子不能移动
return;
}
map[new_box_row][new_box_col] = BOX; // 移动箱子
}
map[man_row][man_col] = ' '; // 清除人
man_row = new_row;
man_col = new_col;
map[man_row][man_col] = MAN; // 移动人
}
int is_win() { // 判断是否胜利
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
if (map[i][j] == DEST) { // 还有目的地未占据
return 0;
}
}
}
return 1;
}
int main() {
char key;
show_map();
while (1) {
key = getch();
switch (key) {
case 'w': move_man(-1, 0); break; // 上
case 's': move_man(1, 0); break; // 下
case 'a': move_man(0, -1); break; // 左
case 'd': move_man(0, 1); break; // 右
case 'q': exit(0); // 退出
}
show_map();
if (is_win()) { // 胜利
printf("You win!\n");
break;
}
}
return 0;
}
```
这个代码实现了一个简单的推箱子游戏,包括地图的初始化、显示、人和箱子的移动、胜利判断等功能。你可以在此基础上进行修改和扩展,使游戏更加丰富和有趣。
阅读全文