i
项目说明文档
Java 扫雷游戏的设计与实现
扫雷这款游戏有着很长的历史,从扫雷被开发出来到现在进行了无数次的优
化,这款游戏变得越来越让人爱不释手了,简单的玩法在加上一个好看的游戏界
面,每一处的细节都体现了扫雷的魅力。所以本次的项目设计我将开发一款扫雷
游戏。
本次项目设计是以 JAVA 语言作为开发环境,使用 Eclipse 设计并开发一个
类似 Windows 扫雷的游戏,实现其基本功能。报告首先介绍了课题背景,其次
进行了需求分析及可行性分析;然后设计游戏流程,介绍雷区中的雷怎么安放和
产生雷的随机算法;最后介绍游戏中可能会触发的各种时间,比如鼠标点击时间
和清理掉没有雷的格子,其中鼠标事件包括点击到或没有点击到雷触发的事件和
点击到重新开始以及菜单触发的事件,清理掉没有雷的格子就需要使用“递归”的
方法来使该功能可以简单的实现。
扫雷;Eclipse;事件;递归
ii
Design and Implementation of Mine Game
Abstract
Mine the game has a long history, from the mine was developed to now
numerous optimization, the game is becoming more and more let a person fondle
admiringly, simple style with a nice game interface, every detail reflects the charm of
mine. So I'm going to develop a minesweeper game.
The graduate design study was designed with the JAVA language as a
development environment, using Eclipse to design and develop a game like Windows
minesweeper to implement its basic functions. The paper firstly introduces the
background of the project and analyzes the requirements and feasibility analysis. Then
the game process was designed to introduce the random algorithm of how the thunder
in the minefield was placed and produced. Finally introduced the game may trigger a
variety of time, such as a mouse click on the clear time and there is no ray of
diamonds, mouse events including click to or no click to ray trigger events and click
to restart and menu trigger events, clearing out squares no ray will need to use the
"recursive" methods to make the function can be simple to implement.
Key words: Mine game; Visual Basic 6.0; Affairs; Recursion
目 录
摘 要 ..........................................................................................................................................................i
Abstract ....................................................................................................................................................ii
1 绪论 ...................................................................................................................................................1
1.1 课题背景及意义 ......................................................................................................................1
1.2 开发工具的选用及介绍 ..........................................................................................................1
1.3 选题目的和意义 ......................................................................................................................2
1.4 本文主要研究的内容 ..............................................................................................................2
2 需求分析 ...........................................................................................................................................3
2.1 可行性分析 ..............................................................................................................................3
2.2 扫雷游戏功能描述 ..................................................................................................................3
2.3 扫雷游戏用例图 ......................................................................................................................4
2.4 扫雷游戏功能需求 ..................................................................................................................4
2.5 扫雷游戏界面需求 ..................................................................................................................5
2.6 扫雷游戏功能模块 ..................................................................................................................6
3 游戏的概要分析与设计 ...................................................................................................................7
3.1 设计构想 ..................................................................................................................................7
3.2 流程规划 ..................................................................................................................................8
3.3 界面规划 ..................................................................................................................................9
3.4 算法思想 ..................................................................................................................................9
4 游戏的详细设计 .............................................................................................................................11
4.1 游戏初始化 ............................................................................................................................11
4.2 雷区的布置 ............................................................................................................................12
4.3 游戏中主要模块的介绍与使用 ............................................................................................13
4.3.1 鼠标事件........................................................................................................................13
4.3.2 地雷及雷区表面探测情况............................................................................................14
4.3.3 清除未靠近地雷的格子................................................................................................15
4.3.4 游戏难度的选择............................................................................................................16
4.3.5 菜单栏的功能................................................................................................................16
4.4 游戏的判断 ............................................................................................................................16
4.4.1 游戏成功完成................................................................................................................16
4.4.2 游戏失败........................................................................................................................16
4.5 类设计 ....................................................................................................................................17
4.5.1 MineGame 类.................................................................................................................17
4.5.2 Block 类 .........................................................................................................................18
4.5.3 BlockView 类.................................................................................................................19
4.5.4 Record 类 .......................................................................................................................20
4.5.5 ShowRecord 类 ..............................................................................................................21
4.5.6 MineArea 类...................................................................................................................22
4.5.7 LayMines 类...................................................................................................................23
5 游戏实现 .........................................................................................................................................25
5.1 游戏难度自定义 ....................................................................................................................25
5.2 扫雷 ........................................................................................................................................28
5.2.1 玩家通过右键进行扫雷,并显示小红旗....................................................................28
5.2.2 玩家因触碰到雷而导致游戏结束................................................................................29
5.2.3 玩家扫雷成功................................................................................................................29
5.2.4 玩家游戏数据显示........................................................................................................30
5.3 程序打包发布过程 ................................................................................................................32
6 游戏测试结果 .................................................................................................................................33
6.1 游戏难度自定义测试 ............................................................................................................33
6.2 扫雷测试 ................................................................................................................................35
6.3 玩家游戏数据显示测试 ........................................................................................................37
6.4 游戏数据显示区测试 ............................................................................................................39
6.5 递归算法测试 ........................................................................................................................43
结 论..................................................................................................................................................44
参考文献..................................................................................................................................................45
致 谢..................................................................................................................................................47
外文原文..................................................................................................................................................48
中文翻译..................................................................................................................................................55
1
1 绪论
1.1 课题背景及意义
在 1964 年
有一个叫“方
块”的游戏,这是扫雷最原始的版本。后来,这个游戏被改
成了另一种游戏,叫做“Rlogic”。在这个游戏中,玩家扮演了一名军队的军人,接受了
一项艰难的任务:为指挥中心探路。当然游戏不会这么简单,这条路上充满了地雷,玩
家需要小心翼翼的探索出一条没有地雷的安全的道路,如果被雷炸死游戏就会结束。一
年后,汤姆·安德森(Tom Anderson)在之前游戏的基础上又编写了一款新的游戏,这
就是扫雷游戏。1979 年, 两名工程师在计算机的操作系统上搭载了这款小游戏,从此
以后扫雷游戏开始风靡全球。如今,越来越多的人喜爱上了这款简单易上手的小游戏,
这个小游戏可以在任何时间在任何平台上进行游戏,让人可以在游戏中享受到乐趣并且
还能在一定程度上锻炼玩家的思维能力。
扫雷这款游戏有着很长的历史,从扫雷被开发出来到现在进行了无数次的优化,这
款游戏变得越来越让人爱不释手了,简单的玩法在加上一个好看的游戏界面,每一处的
细节都体现了扫雷的魅力。所以本次的项目设计我将开发一款扫雷游戏。
扫雷游戏深受大家的喜爱,本次的项目设计也是迎合大家的喜欢,开发一款扫雷小
游戏,同时也可以提高自己编程水平。
1.2 开发工具的选用及介绍
Eclipse 是一款非常好用的编译软件,它也经历了很长时间的发展,并且是由许多公
司联合开发的免费软件。2011 年 5 月,公布稳
定版 4.2;2012 年 4 月公布代号为
Ganymeode 的 4.3 版;2013 年 5 月公布代号为 Galieleo 的 4.4 版;2013 年 7 月公布代
号为 Helomios 的 4.5 版;2013 年 11 月公布代号为 Indigon 的 4.6 版;2014 年 3 月公布
代号为 Jiuno 的 5.1 版;2014 年 7 月公布代号为 Keplere 的 5.2 版;2015 年 3 月公布代
号为 Lunam 的 5.3 版;2015 年 8 月公布代号为 Marse 的 5.4 版。
Eclipse 是目前主流的编写代码的软件,可以支持预编译,在写代码的同时就能知道
是否书写错误,而不用等到运行的时候才发现。原本这个软件只能编写 Java 语言,但
是经过多年的开发设计出了许多的插件,将这些插件安装进去以后就可以编写其他语言
了,这也就是他被大部分人所喜爱的原因。正是由于插件的使用,Eclipse 变得很灵活,
可以通过安装插件来实现原本没有的功能,让软件更加的便利。
Eclipse 一开始是由两个团队联合设计开发出来的,由于该软件的强大功能使得许多
公司纷纷加盟该项目联合开发。而且这个项目是开源的,任何人都能对其进行开发修改,
这让 Eclipse 的名气愈来愈大,后来连甲骨文这种大公司都加入这个项目之中。这种免
费的开发软件也很受许多公司的喜爱,通过安装插件可以使用各种语言。
Java 语言是一种深受大家喜爱的语言,因为它是面向对象的,所以在理解了这种语
言之后就会在代码的设计上有更深刻的理解。
如果没有 JDK,你编写的 Java 代码是无法运行的,这是因为我们需要使用他自带
的类库来帮助我们设计,由于不同的软件都可以编写代码,语言规范也就显得尤为重要,
所以在开始编写代码之前一定要安装好 JDK。
现在在网上是有着许许多多的 JDK 版本,其中以 Sun 公司发布的最好,其他公司
也有开发并发布出来。有的在性能上甚至超过了 Sun 公司的 JDK,有的则在在执行的