写一个C语言推箱子代码
时间: 2024-05-04 17:18:12 浏览: 111
以下是一个简单的 C 语言推箱子游戏代码,使用控制台输出:
```c
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define MAX_ROW 20
#define MAX_COL 20
#define MAX_BOX 10
int map[MAX_ROW][MAX_COL]; // 地图数组
int boxX[MAX_BOX]; // 箱子横坐标
int boxY[MAX_BOX]; // 箱子纵坐标
int boxCount; // 箱子数量
int playerX, playerY; // 玩家坐标
void initMap() { // 初始化地图
int i, j;
for (i = 0; i < MAX_ROW; i++) {
for (j = 0; j < MAX_COL; j++) {
if (i == 0 || i == MAX_ROW - 1 || j == 0 || j == MAX_COL - 1) {
map[i][j] = 1; // 边界
} else {
map[i][j] = 0; // 空地
}
}
}
}
void drawMap() { // 绘制地图
int i, j;
for (i = 0; i < MAX_ROW; i++) {
for (j = 0; j < MAX_COL; j++) {
if (i == playerY && j == playerX) {
printf("P"); // 玩家
} else if (map[i][j] == 1) {
printf("#"); // 墙
} else if (map[i][j] == 2) {
printf("$"); // 箱子
} else {
printf(" "); // 空地
}
}
printf("\n");
}
}
void addBox(int x, int y) { // 添加箱子
if (boxCount < MAX_BOX) {
boxX[boxCount] = x;
boxY[boxCount] = y;
map[y][x] = 2;
boxCount++;
}
}
void initGame() { // 初始化游戏
initMap();
addBox(3, 3);
addBox(7, 3);
addBox(3, 7);
addBox(7, 7);
playerX = 5;
playerY = 5;
drawMap();
}
int isWin() { // 判断是否胜利
int i;
for (i = 0; i < boxCount; i++) {
if (map[boxY[i]][boxX[i]] != 2) {
return 0;
}
}
return 1;
}
void moveBox(int index, int dx, int dy) { // 移动箱子
int x = boxX[index] + dx;
int y = boxY[index] + dy;
if (map[y][x] == 0) {
map[boxY[index]][boxX[index]] = 0;
map[y][x] = 2;
boxX[index] = x;
boxY[index] = y;
}
}
void movePlayer(int dx, int dy) { // 移动玩家
int x = playerX + dx;
int y = playerY + dy;
if (map[y][x] == 0 || map[y][x] == 2) {
int i;
for (i = 0; i < boxCount; i++) {
if (x == boxX[i] && y == boxY[i]) {
moveBox(i, dx, dy);
break;
}
}
playerX = x;
playerY = y;
}
}
int main() { // 主函数
initGame();
while (!isWin()) {
char c = getch();
switch (c) {
case 'w':
movePlayer(0, -1);
break;
case 's':
movePlayer(0, 1);
break;
case 'a':
movePlayer(-1, 0);
break;
case 'd':
movePlayer(1, 0);
break;
}
system("cls"); // 清屏
drawMap();
}
printf("You win!\n");
return 0;
}
```
这个推箱子游戏比较简单,只包含基本的移动和胜利判断,可以根据自己的需要进行扩展。
阅读全文