C++ 迷宫游戏实现代码
题目 通过让游戏角色自动寻找迷宫出口,走出迷宫,来练习C++面向对象之封装的基础知识。迷宫图如下所示,其中X表示墙。
1、程序分析
走出去的原理:遵循右手规则或左手规则。右手扶墙走,就会走出迷宫,反之,亦然。
step1 创建迷宫类,打印出迷宫地图。
step2 创建走迷宫的人的类。
2、程序实现
MazeMap.h
#ifndef MAZEMAP_H
#define MAZEMAP_H
#include
#include //COORD
//在二维数组里,1代表墙,0代表路
#define WALL 1
#define ROAD 0
class MazeMap
{
public:
MazeMap(char wall = 'X');
~MazeMap();
/*设置迷宫地图*/
void setMazeMap(int *mazemap, int row, int col);
void pintMazeMap();
int** getMap(); //返回地图二维数组指针
const char m_cRoad; //常数据成员:路
void setExitPosition(int x,int y); //设置迷宫出口
COORD m_COORDExitPostion; //迷宫的出口
private:
const char m_cWall; //常数据成员:墙
int** m_pMap; //指向迷宫地图二维数组的二级指针
int m_iMapRow; //二维数组的行数
int m_iMapCol; //二维数组的列数
};
#endif
MazeMap.cpp
#include "MazeMap.h"
/**************************
*函数名称:MazeMap()
*函数功能:构造函数,初始化参数
*函数参数:wall 墙的表示符号
*修改时间:2016.7.18
***************************/
MazeMap::MazeMap(char wall):m_cWall(wall),m_cRoad(' ')
{
m_pMap = NULL;
}
/*************************
*函数名称:~MazeMap()
*函数功能:析构函数,释放动态申请的内存空间
*修改时间:2016.7.18
**************************/
MazeMap::~MazeMap()
{
if(m_pMap)
{
for(int i = 0; i < m_iMapRow; i++)
{
delete m_pMap[i];
m_pMap[i] = NULL;
}
delete m_pMap;
}
}
/********************************
*函数名称:setMazeMap()
*函数功能:设置迷宫地图,传递参数
*函数参数:*mazemap 存储地图数据的二维数组的指针
* row 二维数组的行数
* col 二维数组的列数
*修改时间:2016.7.18
**********************************/
void MazeMap::setMazeMap(int *mazemap,