C语言扫雷

扫雷

4.1系统概述参阅现有的扫雷游戏,设计有良好人机交互界面的程序;鼓励用可视化的人机交互设计,如菜单、按钮,可基于 MFC、Qt 等开发工具。

4.2 系统框架结构和算法思想(记得改成多字符型)

框架结构:①:一个扫雷难度选择窗口,选择后,输出扫雷的地图,如何开始进行扫雷:②:左键打开格子,右键插旗子,当打开格子后遇到雷,则输掉比赛;③:将雷除外的格子全部点卡,则胜利;④:无论输赢,系统都会提示是否继续游戏,还是结束退出游戏。

算法思想:①:先进行初始化界面:先创建一个二维数组,赋值为0,头文件#include<time.h>与srand(unsigned)time(NULL)用于生成随机数,运用for循环与随机数,给数组中的MineNum(就是雷的数量)个元素随机赋值为-1,当作雷;将为-1的元素的周围九宫格的元素都+1,并且还要考虑边界的问题;②:进行加载图片:先定义IMAGE imgs[12]数组以及#include<easyx.h>头文件,在创建的项目文件夹中,加入扫雷所需图片的文件夹,设一个加载函数,设一个char类型的数组,在for循环中运用sprintf_s函数以及loadimage函数用于加载文件夹中的图片,并且将图片全部转化为相同的大小。③:绘制地图:将主函数定义的数组传入,运用for循环,将元素值为0~8的元素贴上对应的数字图,给值为-1的元素贴上雷的图,并且在主函数中,再运用initgraph函数创建一个扫雷界面的窗口;④:将上面的地图进行覆盖:即将每个元素值+20进行加密处理,即元素值变为了19~28,然后进行覆盖贴图,将数字与雷的图覆盖掉;⑤:加载鼠标点击操作:左键打开格子,即解密,将元素值-20,显示出覆盖前的图片;右键插小旗子图片,给没有左键打开的元素再+20,并且加载旗子的图片,再一次右键则-20,恢复原来的图片;⑥:使鼠标能够打开格子,插旗子:再while循环中,创建ExMessage msg结构体,然后再用一个while循环用于获取鼠标的不断点击,即左键与右键;⑦:输出空地:先判断鼠标左键点开后的格子的元素值是否为0(即空地),如果符合,则将它周围的九宫格全部打开,并且要设一个if的判断语句。防止越界;⑧:创建一个函数用于游戏结束:如果打开覆盖的格子是雷(即元素值为-1),则返回-1;如果不是,创建一个整型变量,当点开非-1的格子都都+1;运用if判断,是否打开了全部的非雷的格子,如果是则返回1,否则返回0;在主函数的鼠标点击获取函数中,接收返回的值,运用MessageBox函数以及GetHWnd函数,用于提示游戏的胜利、失败。以及是否要继续游戏。⑨:设头文件#include<mmsystem.h>与#pragma comment(lib,”winmm.lib”)用于扫雷的声音加载,用PlaySound函数用于加载文件夹中的扫雷的声音资源,并运用于各功能模块中;⑩:最后是在扫雷窗口前再建一个窗口,用于选择扫雷的简单、中等、困难三种难度(即设置雷的数量),运用类似上面构造扫雷地图的方法,给选择难度窗口初始化界面,贴图,设置鼠标点击功能,三种难度中对应着不同的雷的数量,将这个窗口放在扫雷窗口的前面,用于开始游戏时的选择窗口,考虑到赢了或者输了游戏后,可以返回到这个窗口,则要将这个窗口弄进一个函数中,并将扫雷的窗口也加进去,利用MessageBox返回这个函数,即能返回选择窗口。

4.3 功能模块实现

7c6e947928cb4b1f9d52250e1ed9d921.png

 

4.4 系统测试

f5d8880c3bbf4e41a67e638f8461dc73.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值