项目背景
扫雷是一款大众类的益智小游戏。根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。这款游戏有着很长的历史,从扫雷被开发出来到现在进行了无数次的优化,这款游戏通过简单的玩法,加上一个好看的游戏界面,每一处的细节都体现了扫雷的魅力。
功能分析
完成难度选择,雷随机生成,数字生成,左右键翻开 等功能实现
游戏四种状态:难度选择、游戏状态、游戏胜利、游戏失败
游戏难度:初级、中级、高级(不同难度对应不同的雷区大小和雷数量)
游戏核心:二维数组 的相关操作
其他:窗口绘制、界面规划、操作计数、重新开始。
主类:AppWindows类
AppWindow类负责创建游戏的主窗口,该类含有main方法,程序从该类开始执行。
用户操作设计(data包)
包括Block类:
定义
String name; //名字,比如"雷"或数字
intaroundMineNumber; //如果不是类,此数据是周围雷的数目
ImageIcon mineIcon; //雷的图标
publicboolean isMine=false; //是否是雷
booleanisMark=false; //是否被标记
booleanisOpen=false; //是否被挖开
ViewForBlock blockView; //方块的视图
LayMines类:通过layMinesForBlock方法进行布雷设置,在雷区布置mineCount个雷,先都设置是无雷,然后开始布雷,list返回节点的个数,list删除索引值为randomIndex的节点,检查布雷情况,标记每个方块周围的雷的数目,以及设置该方块周围的雷数目。
PeopleScoutMine类:
定义
publicBlock [][] block; //雷区的全部方块
Stack<Block> notMineBlock; //存放一个方块周围区域内不是雷的方块
int m,n ; //方块的索引下标
int row,colum; //雷区的行和列
int mineCount; //雷的数目
通过调用递归方法show,实现将不是雷的方块压栈和将是雷的方块压栈。
RecordOrShowRecord类:
主要实现连接数据库。创建数据表,实现英雄榜相关数据的存储和读取显示。
游戏视图设计(view包)
BlockView类:
主要用来显示雷的相关视图和布局。
JLabel blockNameOrIcon; //用来显示Block对象的name、number和mineIcon属性
JButtonblockCover; //用来遮挡blockNameOrIcon.
CardLayout card; //卡片式布局
Blockblock ; //被提供视图的方块
MineArea类:
主要用于扫雷过程中的各种事件的判断和处理,以及与用户的交互,比如播放声音等,最后会判断用户是否扫雷成功,以及弹出录入到英雄榜对话框,用于保存用户的英雄榜数据。
PlayMusic类:播放音效调用;
Record类:记录成绩时调用;
ShowRecord类:显示英雄榜数据时调用;
关于测试:
这里我们创建test包,实现AppTest类来进行代码的测试。
小结:
本次项目设计是通过 Java语言编制一个扫雷游戏,Java语言是当今较为流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。这次设计,还有利于加深对 Java课程的进一步了解,也可以巩固所学 Java语言基本知识,增进 Java语言编辑基本功,拓宽常用类库的应用。采用面向对象思想的程序,锻炼了面向对象的设计能力,使我通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握 Java语言的编程思想及面向对象程序设计的方法。
相关截图如下:
![](https://i-blog.csdnimg.cn/blog_migrate/7061d31d63e44442054110e62f68bc43.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e2daf58fcb127e50af2c48e4e9a9b6ad.png)