扫雷游戏实现

2025-03-19 21:44:13

扫雷,是附带在Window里面的游戏,是个简单的游戏。因此我们就从扫雷开始我们的游戏旅程。很多人都玩过这个游戏,只是不知道怎么用程序实现。

工具/原料

c++

游戏规则

1、开始:按左键开始游戏左键:按下时,是雷则结束数字:代表此数字周围一圈八格中雷的个数右键:奇次按下表示雷,偶数按下表示对上次的否定结束:左键按到雷结束,找出全部雷结束

扫雷游戏实现

编程过程

1、添加位图添加全局变量画初始界面添加函数

扫雷游戏实现

添加位图

1、前十二幅是在雷区,后四幅是按钮。为了便于加载,必须保证其连续性。位图的ID号按钮位图:30*30 IDB忧溲枷茫_ANNIU1,IDB_ANNIU2,IDB_ANNIU3,IDB_ANNIU14雷区位图:14*14 IDB_BITMAP14-----IDB_BITMAP25

扫雷游戏实现

变量函数

1、定义新类对于雷,要单独定义一个类,这样有利于程序的操作。

扫雷游戏实现
扫雷游戏实现

2、视图类变量:接着是在View类添加变量和函数

扫雷游戏实现
扫雷游戏实现

具体实现

1、删去状态栏和工具栏:开始执行程序,就能见到一个有状态栏和工具栏的大的单文档,我们第一步就是整理框架:打开下面函数,把里面的一些语句去掉。

扫雷游戏实现
扫雷游戏实现

2、设置窗口大小:运行附加的代码,还能看到扫雷游戏的框架是不能调大小的,而且总是显示在最前面

扫雷游戏实现

3、构造函数:由于构造函数是程序运行就执行的,所以,除了对变量赋值之外,我们还可以把游戏的核心结构即内部数组赋值:先把全部个字的位图和雷数赋值为0,然后调用随机还书指定雷数赋值为-1,最后把不是雷的个字的雷数赋值为相应的值。

扫雷游戏实现
扫雷游戏实现
扫雷游戏实现

界面函数

1、现在,可以开始画界面了。如下函数:很明显,前面部分是用画的方法画出整个界面,但是,后面for循环显示的位图并不是现在画界面的内容,为什么要写呢?这是为了用户框重画的需要,当我们的锑郎颥坜游戏玩了一半后最小化,或是把部分窗口移出屏幕,或是执行了新的应用程序覆盖了原来的程序时,必须重画。我们调用重画函数,它都要重新执行OnDraw(CDC* pDC)函数,那么,此时它就必须把已经显示出来的位图也显示出来。而开始时雷区位图是不可见的,并不影响界面的初始化。

扫雷游戏实现
扫雷游戏实现
扫雷游戏实现
扫雷游戏实现
扫雷游戏实现
扫雷游戏实现

2、运行一下,外观已经出来了,只是还不能玩。那我们就来添加一些功能函数,使它可以玩。当然,如果你对程序已经有一定的经验的话,你就会指出上面的函数太长了。这并不太符合我们编程的要求。我们编程有一个讲究,就是尽量使函数的代码少,一般为一页左右,便于查看。那么,我们可以把上面的函数细分为几个小函数,然后在这个函数里面分别调用。

3、按下鼠标左键:用if语句判断,如果在按钮上面,则显示按钮按下位图;如果在扫雷区,先把按钮位图改为张口位图,再判断按下的是否是雷,是就结束,重画,以显示所有的雷;否则,重画相应格子以显示数字。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢