C++基于easyx图形库实现推箱子游戏

2020-06-30 16:01:48王旭

本文实例为大家分享了C++实现推箱子游戏的具体代码,供大家参考,具体内容如下

头文件:

#include<stdio.h>
#include<stdlib.h>
//#include<Windows.h>
#include<conio.h>
#include<graphics.h>
#include<stdbool.h>
 
//播放音乐需要的头文件
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
 
//格子边长
#define SPACE 60
 
//6.3.1 定义变量
IMAGE png[12];//5张图,定义5个变量,定义一个数组
 
#define MapMany 6
 
//枚举方向
enum CH {
  right = 1,
  left = 2,
  up = 3,
  down = 4
}ch;
 
//定义一个全局三维数组
 
//0表示空地“ ”    1表示墙“■”    2代表目的地“⊙”    3代表人站在空地上“♀”    4代表箱子“□”
//5箱子与目的地重合“◆”    6,人站在目的地上“♀”
 
//下面定义地图
int map[MapMany][10][10] = {
  //图一
  {
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 2, 0, 1, 1, 0, 0, 0, 2, 1 },
    { 1, 0, 0, 1, 1, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 1, 1, 0, 4, 1 },
    { 1, 0, 0, 1, 1, 1, 1, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 1, 0, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 1, 0, 0, 0, 1 },
    { 1, 4, 0, 0, 0, 0, 0, 3, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  },
  //图二
  {
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 0, 1, 2, 0, 0, 0, 4, 0, 1 },
    { 1, 0, 1, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 1, 0, 0, 1, 1, 0, 0, 1 },
    { 1, 0, 1, 0, 0, 1, 1, 0, 0, 1 },
    { 1, 0, 1, 1, 1, 1, 1, 0, 3, 1 },
    { 1, 0, 1, 1, 1, 1, 1, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 2, 0, 0, 4, 0, 0, 0, 0, 1 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  },
  //图三
  {
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 2, 0, 1, 0, 0, 3, 0, 0, 1 },
    { 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 1, 1, 0, 0, 1 },
    { 1, 4, 0, 1, 1, 1, 1, 0, 0, 1 },
    { 1, 0, 0, 1, 1, 0, 0, 0, 4, 1 },
    { 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 4, 0, 1, 0, 0, 1 },
    { 1, 2, 0, 0, 0, 0, 1, 0, 2, 1 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  },
  //图四
  {
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  },
  //图五
  {
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
    { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
  },
  //图六
  {
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  }
};
 
//定义当前关卡
int WhatMap = 0;//初始化位第0张地图
 
void DrawMap(int n);
void initscreen();
void ManUp();
int KbHit();
void ManUp();
void ManRight();
void ManLeft();
void ManDown();
int GameOver();
void drawGame();