用VC++编写扫雷游戏
2008-11-13 19:30:42 来源:WEB开发网OnDraw函数在每次点击左键或右键时都会被调用重雷区和控制区域,因为点击情况的复杂性和雷属性的多元化导致OnDraw函数需要精心设计。
函数Caculate计算某个雷周围的雷数,根据前面的分析知道,计算某个雷周围的雷数本身就是一个递归过程,在编制时应注意递归的边界条件,稍不注意会陷入无穷递归而耗尽了系统的资源。
6. 菜单命令的响应是游戏交互的另一个重要方式,下面的九个命令响应函数分别与九个菜单项相对应,用以完成用户的更新和设置命令。
OnGameBegin完成初始时间清零,随机布雷,依据颜色指示装载12幅小位图,使雷区无效调用OnDraw重绘等工作。其中随机布雷就是多次调用rand(),根据其返回值决定m_bomb[I][j].isbomb的值。
OnGameCustom首先弹出CCustomer对话框,在用户输入设置后响应IDOK通知码时将用户输入的雷数、行列数分别赋给CView的数据成员m_iBombNum、m_iRow、m_iColumn,得到框架窗口的指针,用其调用MoveWindow将窗口调至所需大小,销毁原位置的位图按钮,并在X轴坐标为新窗口宽1/2减8处,Y轴坐标为新窗口顶部加30的位置创建一新按钮。最后调用OnGameBegin重新开始游戏。
OnGameJunior、OnGameMiddle、OnGameSenior三个函数与OnGameCustom类似,只不过将分别赋给CView的数据成员m_iBombNum、m_iRow、m_iColumn以固定的值,其大小可由编程者自定,笔者定为Junior(20,8,8,)、Middle(40,13,13)、Senior(99,20,25)。
OnGameColor函数销毁原位图按钮,根据重新装载位图的标志m_IsColor来创建新的位图按钮,将装载12幅单色位图的标志取反,调用OnGameBegin重新开始游戏。
OnGameSort函数根据当前游戏级别从注册表中读出排名并弹出SORT对话框显示结果。到现在为止,一个自己编制的扫雷游戏就基本完成了,将数百行代码编译一下,找出小错误,最后BUILD一遍,RUN一下,好了,可爱的扫雷游戏就出现在你的面前了。怎么样,自己的劳动成果并不比Microsoft的差吧,而且你还可以把小位图画成各种样子,当然你自己要认得出才行了。
更多精彩
赞助商链接