我校信息工程学院“扫雷少女101”团队根据功能模块对扫雷游戏的功能进行编码。
按照扫雷游戏的功能模块设计,信息工程学院扫雷少女101团队使用visual studio2017编程工具进行了程序编写,其中主要设计的类有三个: main、pane、minefield。
main是主控窗体,负责项目的启动和关闭,并协调内部各个组建模块的协调工作。7月16-19日,团队进行了主窗体的搭建实现:界面设计:使用combobox下拉选择框控件设置难度,button控件用来设置开始和结束;以及代码实现:在开始控件中写入click方法,判断mainfield控件中是否有无pane控件,若无则初次初始化同时可选择相应难度;若有pane控件,表示游戏在进行中,此时重新初始化并选择相应难度。初始化过程调用init函数,并为不同难度设置相应参数。结束控件的click方法则只需使用mainfield的displayall()方法即可。
图1:主控窗体设计
pane是一个方格的封装,是雷区的重要组建,表示一个方格的当前状态,以及是否布雷等信息。7月20-23日,“扫雷少女101”进行了方格的程序编码。
图2:pane主要实现方法
pane的封装主要考虑以上6个方面,首先在pane()方法中定义布尔类型的hasmine变量,int类型的aroundminecount方法,以及继承自panestate类型的状态方法,三个方法都带有get和set方法可调用或设置参数;并于open()函数中使用this关键字更为简便地确定当前点击的区域,通过hasmine方法判断是否有雷,作出周围区域的改变。
minefield是雷区的封装,是游戏的核心组建,负责方格的布局以及地雷的分布,并控制玩家的基本操作以及正确的响应。7月24-27日,“扫雷少女101”进行了雷区封装部分代码的编写。
图3:mainfield主要实现方法
init()初始化方法涉及到每行每列的方格数量和地雷总量,调用layoutpanes()方法和laymines()方法布置雷区大小以及地雷数。getaroundminecount使用list存储结构来存储数据并且使用foreach方法循环调用参数获得周围地雷数。minefield相对比较复杂,涉及到参数的相关计算和方法的相互调用,若出现偏差整个游戏就功亏一篑,功能的使用就会出现偏差。
图4:杜亦然同学在编写部分代码
经过十二日的组内分工与代码编写,扫雷少女101完成了最终的成品,运行结果如下:
图5:扫雷游戏运行结果
日前扫雷游戏基本开发完成,实现了功能模块所有功能。但是由于在ui方面涉猎不足,最终只是在基本功能上与windows扫雷一致,仍有很大的改进空间,比如在美观、功能、趣味等方面还需加以改善。
摄影:张婷炜
文字编辑:张婷炜