1. 资源视图中添加扫雷所需要的位图
2. 在窗口类定义的前面添加下面两个新建的类
//创建一个雷位类
class OneMine
{
public:
OneMine();
void InitOneMine(); //初始化一个雷位
bool IsMine; //是否是雷
bool Opened; //是否已经打开
bool Mark; //是否已经被标记
short AroundMines; //周边的雷数
short state; //显示图形号
};
//创建雷区类
class Mines
{
public:
bool GameOver; //扫雷是否结束
short Times; //扫雷所用的时间
short Rows,Cols; //雷区的行数、列数
short MinesCount; //布设雷的数量
short MarkMines; //标对雷的数量
short VirtualMines; //标记为雷的数量
OneMine *pos[52][32]; //存放雷对象的数组指针
Mines();
~Mines();
void ReInitMine(short row,short col,short mines); //重新初始化雷区
void LayOneMines(); //布置一个地雷
void CalculateAroundMine(int x,int y); //计算每个雷周边的雷数
void ShowOneMine(int x,int y); //显示一个雷位
void ShowAllMine(); //显示所有雷位
void OpenOneMine(int x,int y); //打开一个雷位
void MarkOneMine(int x,int y); //标记一个雷位
};
3. 再窗口代码中添加类中函数实现的代码
//雷位构造函数
OneMine::OneMine()
{ InitOneMine();
}
//重新初始化一个雷位
void OneMine::InitOneMine()
{ IsMine=Opened=Mark=false; AroundMines=0;
state=-1; //state=-1为该雷未打开,也未标记,state=1到8为该雷位周边地雷数
//state=9 为该雷位做了标记
//state=10 为该雷位有疑问
//state=11 为该雷位标错了地雷
//state=13为真雷
}
//雷区构造函数
Mines::Mines()
{ for(int i=0;i<32;i++)