用c++写个推箱子游戏
时间: 2024-05-25 08:06:34 浏览: 102
以下是一个用C++编写的推箱子游戏的示例代码:
```cpp
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
const int WIDTH = 10;
const int HEIGHT = 10;
char map[HEIGHT][WIDTH] = {
{'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'},
{'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'}
};
int playerX = 1;
int playerY = 1;
void drawMap() {
system("cls");
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
cout << map[i][j];
}
cout << endl;
}
}
void movePlayer(int dx, int dy) {
if (map[playerY + dy][playerX + dx] == ' ') {
map[playerY][playerX] = ' ';
playerX += dx;
playerY += dy;
map[playerY][playerX] = '@';
}
else if (map[playerY + dy][playerX + dx] == '$') {
if (map[playerY + dy * 2][playerX + dx * 2] == ' ') {
map[playerY][playerX] = ' ';
playerX += dx;
playerY += dy;
map[playerY][playerX] = '@';
map[playerY + dy][playerX + dx] = '$';
}
}
}
int main() {
drawMap();
while (true) {
if (_kbhit()) {
char input = _getch();
switch (input) {
case 'w':
movePlayer(0, -1);
break;
case 's':
movePlayer(0, 1);
break;
case 'a':
movePlayer(-1, 0);
break;
case 'd':
movePlayer(1, 0);
break;
case 'q':
exit(0);
break;
}
}
drawMap();
}
return 0;
}
```
这是一个简单的控制台推箱子游戏,玩家通过键盘输入w、s、a、d来控制角色上下左右移动,推动箱子到指定位置即可胜利。游戏地图使用二维字符数组表示,其中'#'表示墙壁,' '表示空地,'@'表示玩家,'$'表示箱子。玩家可以通过移动来推动箱子。游戏会不断刷新地图并等待玩家输入,直到玩家退出游戏。
阅读全文