用VC++编写扫雷游戏
2008-11-13 19:30:42 来源:WEB开发网3. 定义类Bomb,封装每颗雷的相关属性。
Class Bomb
{
public:
int isbomb;//决定初始时是否是雷
bool issel; //判断区域是否被处理过且周围有雷
bool isdone;//判断递归时是否被处理过
int num; //周围雷数
bool findbomb; //排雷者认为是雷时置一(但是不一定真是雷)
} ;
4. 重载CMainFrame中PreCreateWindow,并设置相应属性,使其窗体大小固定,这样就固定了显示区域的大小为初始10乘10个雷和外加雷区上部的控制区域,部分代码如下。
cs.style=WS_OVERLAPPED|WS_SYSMENU| WS_BORDER|WS_MINIMIZEBOX;
cs.cy = 10*15+6;
cs.cx = 10*15+60; //6和60分别是横纵的附加值,用于边框、菜单、标题条、控制区域。
5. 游戏的主要工作就是呈现不断变换的图形或动画,并按用户的输入交互进行显示,而Windows文档-----视窗构架中的视窗的功能正是接受用户输入并负责显示,因此由CView类来完成扫雷的大部分工作。在CBombView中定义下列成员变量记录相关操作的结果或对象的状态。
Bomb m_bomb[30][30]; //最大的地雷区域
CString m_CurrentTime; //用于记录并显示扫雷时间
CTime m_BeginTime;//记录游戏开始时的时间
BOOL m_TimerBegin;//定时器是否开启
int m_iBomNum;//雷的数目
int m_iRow;//雷的行数
int m_iColumn;//雷的列数
int m_iBombFound;//指示被认为是雷的数目
CBitmapButton m_bitButton;//控制区的位图按钮
int m_CurrentLevel;//指示当前游戏的级别
BOOL m_bIsColor;//指示当前是彩色还是单色
CBitmap m_bmBomb[12];//用于存放12个小位图
int m_iGameOver;//游戏未结束置0,已清除所有的雷置1,被炸死置2。
更多精彩
赞助商链接