刚接触MFC没多少时间。处在摸索状态。做扫雷是为了增加自己的实战经验。
学习编程免不了接触自己不熟悉的东西,然后边查边做,很正常的学习方式。
做扫雷有几个地方要注意:
1, 数据的选择。听到有些人说用一大堆button来组成雷区,没试过,不过总觉着太疯狂了。
我选用的是
struct BombUnit
{
BOOL IsTurned; // 用来表示当前区域是否被翻过
int DisplayNum; // -1 表示为雷,0 表示空白区域,其他数字表示周围的雷数
CRect rtUnit; // 位置。当然你也可以用一个point或两个point来表示。
}
2 , 地图的生成。无所谓就是用随机数来获得在那个位置上是雷。关键是怎样确定雷点周围方块的数字。
先把所有位置都置为0, 然后确定雷的位置。最后扫描每一个方块,确定它周围有几个雷。
或者是确定雷的位置后,让它周围的方块都 ++1 ,不过要注意的就是 千万不能对已经是雷的方块++1。
3, 捕获鼠标的点击位置可以确定点击的是那一个方块。简单就不说了。
4 , 还有一个地方需要时间效率的就是:当你点击一个空白位置的时候,它邻近的空白区域都要打开。并且
与空白区域相邻的数字区也要打开(不可能是雷点)。
我是用递归来做的。
5 , 我是直接在视类中写进代码的,也可以用一个类继承视类。专门写一个独立的类来表示,好像也不是不可
以。没有试过。
本文介绍了使用MFC开发扫雷游戏的经验,包括选择合适的数据结构、地图生成算法、鼠标点击处理及递归实现等关键技术点。
3670

被折叠的 条评论
为什么被折叠?



