应 @姑娘的衣扣 同学的要求,分享16级同学大一上学期实现的扫雷游戏。分步骤代码、可执行程序、录屏效果可以从百度网盘下载:http://pan.baidu.com/s/1gf6AHKv
开局画面:
胜利画面:
失败画面:
主要功能描述:
1.全局变量:时间基点,地图,图片资源,关键状态;
2.绘图初始化函数drawinit:载入图片资源;
3.设置器函数Setup:放置地雷;
4.主要显示函数Show:依照层次结构显示雷区;
5.队列处理函数duires:(核心算法)对无雷的输入进行扩展搜索,调用位置搜索函数辅助,调用响应函数输出;
6.位置搜索函数poi_sum:队列处理函数的辅助函数,将输入点的坐标周围八个格子的雷数返回给他;
7.响应函数do_null,not_null:随时处理队列处理函数的结果;
8.主控函数Control:接受鼠标的输入,处理简单的逻辑,复杂的交由队列处理函数执行;
9.计时器函数Time:计算累计时间,并显示;
10.胜利判定Judge:判断是否用户胜利;
11.主函数main:控制中心。
主要实现步骤:
1.明确游戏流程:包括重要的游戏规则和逻辑,如被旗帜标记的方块无法被点击等。
2.搭建游戏框架:采用老师的框架和重要模块分开编写,并定期整合的方式进行。
a.图片显示:一开始采用网上(贴吧)的资源,后来大部分利用办公软件制作。
b.核心算法:尝试了链表和结构体数组,都出错(溢出),多次调试后发现是由于标志原因,无法区别已经处理和未处理的模块;再次调试发现效率极低,检查后发现是一个位置的变量名使用了上一级循环的变量名。
c.程序调度。
3.添加额外模块:将一些不太重要的功能写成函数,加入调度。
a.计时器:利用了钟表程序的一部分代码,做了很多修改。
b.加亮显示:提醒用户鼠标指向的位置。
c.开局提示及重新开始。
4.代码优化。