关于扫雷游戏
最近老师让我们自学MFC做一些小游戏,不过从没接触过MFC,会c++,'只有八周时间求各位高手给些建议和思路,目前选定题目是扫雷,求指导。
我用VB做过。但MFC我不太懂。只能就编程思路说一说看法。至于雷的分布,用一个枚举变量的二维矩阵数组,随机赋值就行了。
扫的过程要麻烦一些。写一个Uncover函数,鼠标点击一块地砖的时候,将点击的位置(一般是横纵坐标)作为传参传递到函数体中去,先检查它本身是否是地雷,如果是,GAMEOVER,如果不是,再检查它周围的八个位置有没有地雷,统计出雷的数量,显示在点击的位置上,如果周围没有地雷,则把所点击位置的周围八个地砖全部翻开,以递归调用的方式依样检查新翻开的八个地砖周围地雷有多少。具体操作是:在翻开周围的某个地砖时,把新翻地砖的坐标再次作为参数传递给Uncover函数……不过要注意你得先定义一个布尔型的全局二维数组,全部初始化为false,每翻开一个地砖时,必须用二维的布尔型数组当中相应位置的布尔变量设true值来标记该地砖已经翻过(或者你把布尔变量写成地砖类的成员变量也一样,看各人习惯),每次递归调用前先做逻辑判断,符合条件还进入递归,以免出现循环调用导致死循环。(比如你当前位置周围没有地雷,需要调用递归,从当前位置的左上角开始顺时针方向翻砖,左上角第一个翻开,当它同样按照顺时针方向检查时,检查到右下角时正好是它上一级调用Uncover时的传参,这时你当然不能再把它的坐标作为参数进行递归)