用C++写一个推箱子小游戏
时间: 2023-03-19 10:23:00 浏览: 154
好的,推箱子小游戏可以使用C语言编写。下面是一个基本的游戏框架:
```
#include <stdio.h>
#include <conio.h>
#define MAX_MAP_SIZE 10 //地图最大尺寸
char map[MAX_MAP_SIZE][MAX_MAP_SIZE]; //地图数组
int playerX, playerY; //玩家的位置
int boxCount, boxX[MAX_MAP_SIZE], boxY[MAX_MAP_SIZE]; //箱子的数量和位置
void initMap(); //初始化地图
void drawMap(); //绘制地图
int moveBox(int x, int y, int dx, int dy); //移动箱子
int main() {
char ch;
initMap();
while (1) {
drawMap();
ch = getch();
switch (ch) {
case 'w': //向上移动
if (map[playerY-1][playerX] == '.') playerY--;
else if (map[playerY-1][playerX] == 'B' && map[playerY-2][playerX] == '.') {
if (moveBox(playerX, playerY-1, 0, -1)) playerY--;
}
break;
case 'a': //向左移动
if (map[playerY][playerX-1] == '.') playerX--;
else if (map[playerY][playerX-1] == 'B' && map[playerY][playerX-2] == '.') {
if (moveBox(playerX-1, playerY, -1, 0)) playerX--;
}
break;
case 's': //向下移动
if (map[playerY+1][playerX] == '.') playerY++;
else if (map[playerY+1][playerX] == 'B' && map[playerY+2][playerX] == '.') {
if (moveBox(playerX, playerY+1, 0, 1)) playerY++;
}
break;
case 'd': //向右移动
if (map[playerY][playerX+1] == '.') playerX++;
else if (map[playerY][playerX+1] == 'B' && map[playerY][playerX+2] == '.') {
if (moveBox(playerX+1, playerY, 1, 0)) playerX++;
}
break;
case 'q': //退出游戏
return 0;
}
}
}
void initMap() {
//初始化地图数组
//其中 '#' 表示墙壁,'.' 表示空地,'P' 表示玩家,'B' 表示箱子
//例如:
//#####
//#...#
//#.BP#
//#...#
//#####
//表示一个大小为5x5的地图,其中有4个墙壁,1个玩家和1个箱子。
}
void drawMap() {
//绘制地图
//例如:
//#####
//#...#
//#.BP#
//#...#
//#####
//玩家当前位置用 'P' 表示,箱子当前位置用 'B' 表示。
}
int moveBox(int x, int y, int dx, int dy) {
//移动箱子
//x, y 表示箱子当前位置,dx, dy 表示箱子的
阅读全文