扫雷毕业设计.docx
- 文档编号:25344120
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:24
- 大小:208.86KB
扫雷毕业设计.docx
《扫雷毕业设计.docx》由会员分享,可在线阅读,更多相关《扫雷毕业设计.docx(24页珍藏版)》请在冰豆网上搜索。
扫雷毕业设计
基于Java扫雷游戏的设计与实现
院系:
计算机与电子系
专业班:
计算机应用技术0902班
姓名:
张峥
学号:
***********
***********
2012年6月
基于Java扫雷游戏的设计与实现
DesignandImplementationofJavaMinesweeperGame
摘要
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。
在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。
Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。
Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
近年来Java作为一种新的语言,以其简单性,平台无关性和可移植性等优点,得到了广泛的应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。
JBuilder是Bonrla公司用于快速开发Java应用的一款优秀的集成开发环境,它以其友好的的开发界面,强大的组件支持等优点,得到了广大程序员的接受与认可。
本论文研究的是以Eclipse为开发环境,设计并开发一款扫雷游戏,其功能类似于Windows操作系统自带的扫雷游戏。
论文首先介绍了制作游戏的整体思路及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方法;重点介绍了在游戏过程中各事件的处理。
关键词:
Java扫雷Eclipse
Abstract
Javaisacross-platformapplicationsoftwarecanwriteobject-orientedprogramminglanguage,thegeneraltermoftheJavaprogramminglanguagebySunMicrosystems,Inc.inMay1995andtheJavaplatform.HardwareoroperatingsystemplatformtoinstallaJavaplatform,Javaapplicationscanrun.Javaisasimple,object-oriented,distributed,interpreted,robustsecurity,thestructure-neutral,portable,high-performance,multithreadeddynamiclanguage.Hasexcellentversatility,efficiency,platformportability,andsecurityofJavatechnology,widelyusedinpersonalPC,thedatacenter,gameconsoles,scientificsupercomputers,mobilephonesandtheInternet,whiletheworld'slargestdeveloperofprofessionalcommunity.GlobalcloudcomputingandmobileInternetindustryenvironment,Javahassignificantadvantagesandbroadprospects
Javainrecentyearsasanewlanguage,withitsadvantagesofsimplicity,platformindependenceandportability,getawiderangeofapplications,especiallyJavaandtheWorldWideWebperfectbinding,makingitthenetworkprogrammingandembeddedprogrammingthepreferredprogramminglanguage.JBuilderisanexcellentintegrateddevelopmentenvironmentBorlancompanyforrapiddevelopmentofJavaapplications,anditsfriendlydevelopmentinterface,powerfulcomponentsupports,etc.,hasbeenacceptedandrecognizedbythemajorityofprogrammers
ThisthesisisbasedontheEclipsedevelopmentenvironment,designanddevelopamine-sweepinggame,itsfunctionissimilartominesweepergamethatcomeswithWindowsoperatingsystem.Thepaperfirstintroducestheideaofmakingthegameasawholeandtheentiregamedesignprocessplanning,andrandomlygeneratedminefieldlayoutandmine;focusesonthehandlingofeventsinthecourseofthegame.
Keywords:
JavaMinesweepingEclipse
摘要Ⅰ
AbstractⅡ
绪论1
1开发环境2
1.1开发工具2
1.2应用环境2
1.3编写意义2
1.4任务设计内容3
2可行性分析和需求分析4
2.1可行性分析4
2.2需求分析5
3概要设计6
4详细设计8
4.1MineGame类8
4.2MineArea类9
4.3Block类11
4.4BlockView类12
4.5LayMines类12
4.6Record类13
4.7showRecord类14
5系统测试16
结论20
致谢21
参考文献22
绪论
扫雷一词有多个意思。
扫雷游戏是微软于1992年附带在其操作系统中的小游戏,它通过点击格子并以出现的数字来判断附近地雷的数量,将全部地雷做上标记即可胜利;军事上的扫雷(mineclearing)是指搜索和清除地雷、陆军水雷及其他爆炸物的行动;扫雷又被引作网络用语。
扫雷最原始的版本可以追溯到1973年一款名为“方块”的游戏,不久之后,“方块”被改写成了游戏“Rlogic”,在“Rlogic”里,玩家的任务是作为美国海军陆战队队员,为指挥中心探出一条没有地雷的安全路线,如果路全被地雷堵死就算输。
两年后,汤姆·安德森在“Rlogic”的基础上又编写出了游戏“地雷”,由此奠定了现代扫雷游戏的雏形。
1981年,微软公司的罗伯特·杜尔和卡特·约翰逊两位工程师在Windows3.1系统上加载了该游戏,扫雷游戏才正式在全世界推广开来。
这款游戏的玩法是在一个9*9(初级),16*16(中级),16*30(高级),或自定义大小的方块矩阵中随机布置一定量的地雷(初级为10个,中级为40个,高级为99个)。
由玩家逐个翻开方块,以找出所有地雷为最终游戏目标。
如果玩家翻开的方块有地雷,则游戏结束。
扫雷游戏的目标是尽快找到雷区中的所有不是地雷的方块,而不许踩到地雷。
游戏区包括雷区、地雷计数器和计时器,在“游戏”菜单上,单击“开局”,计时器就会启动,此时请单击游戏区中的任何方块,点开的数字是几,则说明该数字旁边的8个位置中有几个雷,如果挖开的是地雷,则会输掉游戏,用右键标记您认为可能有地雷的方块。
1开发环境
1.1开发工具
SunMicrosystems公司在推出Java语言的同时,推出了一套开发工具JDK。
Sun提供的基于字符模式的Java开发工具包JDK:
Java开发工具(JDK)是许多Java专家最初使用的开发环境。
Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。
Java源程序编写借助于记事本,Editpuls,UltraEdit等三方编辑工具编写。
所有的Java文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。
JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。
其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。
JDK是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)。
不论什么Java应用服务器实质都是内置了某个版本的JDK。
因此掌握JDK是学好Java的第一步。
JDK里面是Java类库和Java的语言规范,它提供的是无论你用何种开发软件写Java程序都必须用到的类库和Java语言规范.没有JDK,你的Java程序根本就不能用。
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。
其中IBM的JDK包含的JVM(JavaVirtualMachine)运行效率要比SunJDK包含的JVM高出许多。
而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。
但不管怎么说,我们还是需要先把SunJDK掌握好。
1.2应用环境
(1)操作系统:
WindowsXP及以上版本
(2)应用软件:
JDK2.0Eclipse6.0
1.3编写意义
随着计算机得普及,人们越来越多得接触到计算机,人们得生活工作中无处不有计算机得身影,人们面对长时间的难免会有倦怠的情绪,而人们大多得缓解情绪得网络活动其实并不能起到放松心情得作用,现代人得生活节奏越来越快,有没有一种快速缓解疲倦得游戏呢?
我们提出设计一款益智得小游戏,这种游戏不会花太多时间,同时把玩家得思维带动起来,达到一举多得得效果。
随着现在生活节奏的加快,人们在工作之余需要一个轻松娱乐的放松环境。
因此我们小组编写此软件的目的,一方面作为初学者来了解扫雷的开发,另一方面开发此软件使用户能在娱乐休闲的同时拓展思维能力。
同时进一步拓展研究,做到将扫雷层次升级,能够在多人连机的情况下,一起分工来进行对战。
如一方放雷,另一方排雷。
1.4任务设计内容
本次设计只是完成了扫雷游戏的基本功能,在细节方面仍有待以后完善。
Windows2000/XP系统提供的扫雷游戏是一个很有趣的游戏。
本章的课程设计使用Java语言编写一个与其类似的扫雷游戏。
具体要求如下:
(1)扫雷游戏分为初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。
单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。
(2)选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。
(3)用户要揭开某个方块,可单击它。
若所揭方块下有泪,用户便输了这一局,若所揭方块下五雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。
(4)如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。
用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。
(5)扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。
2可行性分析和需求分析
2.1可行性分析
适用于各种群体,学生、老师、白领,简单却有效地舒缓压力,消磨闲暇时光,一局所需的时间很短,低级的只需十多秒,此软件是以娱乐为主的休闲游戏,开发基于安卓手机操作系统。
具有操作方便、便于保存等优点
投资可行性:
主要根据市场调查及预测的结果,以及有关的产业政策等因素,论证项目投资建设的必要性。
(1)财务可行性:
主要从项目及投资者的角度,设计合理财务方案,从企业理财的角度进行资本预算,评价项目的财务盈利能力,进行投资决策。
(2)组织可行性:
制定合理的项目实施进度计划、设计合理的组织机构、选择经验丰富的管理人员、建立良好的协作关系、制定合适的培训计划等,保证项目顺利执行。
(3)经济可行性:
主要从资源配置的角度衡量项目的价值,评价项目在实现区域经济发展目标、有效配置经济资源、增加供应、创造就业、改善环境、提高人民生活等方面的效益。
(4)法律可行性:
在开发一个软件之前一定要确定它是否触犯某项法律或与国家的相关规定是否抵触。
扫雷游戏系统并不与任何法律或国家相关规定相抵触,所以在法律可行性上是通过的,在进行设计时没有违法任何法律法规,也不对任何企业的系统进行侵权等。
系统的研制和开发都选用正版软件,将不会侵犯他人、集体和国家的利益,不会违反相关的国家政策和法律。
(5)技术可行性评价:
在限制条件下,功能目标基本能够实现和达到,利用现有技术,功能目标基本能够达到,开发人员足够能够满足条件要求,在规定时间内能够完成该项目开发。
2.2需求分析
随着社会的不断进步,人们所承受的压力不断上升,在游戏层出不穷的时刻,扫雷游戏仍受到不少人的青睐,其本身的性质,决定了人们对它的喜爱程度,不需要特殊的技巧,不需要不断地升级,不需要太多的时间进行初步的熟悉,简简单单却乐趣无穷。
2.2.1理解需求
扫雷游戏系统的建立,需要进行用户需求调查与分析,以确定系统目标,提高解决问题的详细方案,这是系统建设的重要环节。
(1)系统可以根据需求来设计功能模块,如“开局”、“初级”、“中级”、“高级”“自定义”、“扫雷英雄榜”和“退出”等。
(2)系统运行在Eclipse平台下,系统应该有一个较好的图形用户界面。
2.2.2功能需求
需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统(手工系统或计算机系统)工作概况,明确各种需求,然后在此基础上确定新系统的功能。
根据用户的需求,确定本图书管理系统应具有以下功能:
(1)用户可以自定义级别并且可以任意输入雷数;
(2)具有计时功能,即显示用户完成移动盘子所花费的时间;
(3)自动保存扫雷英雄榜;
(4)用户可以设计“初级”、“中级”、“高级”三个级别。
3概要设计
在设计扫雷游戏时,需要编写7个Java源程序:
MineGame.java、MineArea.java、Block.java、BlockView.java、LayMines.java、Record.java和ShowRecord.java。
扫雷游戏除了需要编写上述7个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如File、JButton和JLabel等类。
扫雷游戏所用到的一些重要的类以及之间的组合关系如图3-1所示。
图3-1类之间的组和关系
(1)MineGame.java(主类)
MineGame类负责创建扫雷游戏机主窗口,该文件含有main方法,扫雷游戏从该类开始执行。
MineGame类主要有三种类型的成员:
File、MineArea和ShowRecord对象。
(2)MineArea.java
MineArea类创建的对象是MineArea类最重要的成员之一,代表“扫雷区域”。
该类的成员变量中有5个重要类型的对象:
Block、BlockView、LayMines和Record。
(3)Block.java
Block类是雷区中“方块”的类封装,含有关于“方块”的属性以及操作,即负责为雷区创建代表“方块”的Block对象。
(4)BlockView.java
BlockView是JPanel容器的子类,BlockView创建的对象负责为Block对象提供视图,以便用户通过该视图与Block对象交互。
BlockView对象使用一个标签和按钮为Block对象提供视图,标签和按钮按着卡片布局(CardLayout)层叠在一起,默认状态下按钮遮挡住标签。
当用户单击按钮后,如果Block对象是雷,BlockView对象中的标签显示的是雷的图标;如果Block对象不是是雷,标签显示的是当前Block对象周围雷的总数。
(5)LayMines.java
LayMines类对象不需要视图,在游戏中不需要看见该对象。
LayMines对象使用随机算法指定MineArea对象中的哪些Block对象是雷,哪些Block对象不是雷。
(6)Record.java
Record类是JDialog对话框的子类,当用户扫雷成功时,Record对象负责保存用户的成绩到文件。
(7)ShowRecord.java
ShowRecord类是JDialog对话框的子类,当用户查看扫雷的最好成功时,ShowRecord对象负责读取文件数据的界面。
4详细设计
扫雷系统流程图如图4-1所示。
图4-1流程图
4.1MineGame类
MineGame类是javax.swing包中JFrame的一个子类,并实现了ActionListener接口,标明该类的主要成员变量和方法的UML图如图4-2所示。
图4-2MineGame类的UML图
以下是UML图中有关数据和方法的详细说明。
(1)成员变量
①bar和fileMenu提供菜单操作,单击游戏菜单中的选项为“初级”、“中级”和“高级”或“扫雷英雄榜”。
②mineArea是扫雷区域,提供有关扫雷的主要功能。
③“英雄榜”负责存放三个级别的扫雷最好的成绩。
④showHeroRecord负责显示英雄榜中的数据。
(2)方法
①MineGame()是构造方法,负责完成窗口的初始化。
②actionPerformed(ActionEvent)方法是MineGame类实现的ActionListener接口中的方法,该方法负责执行菜单发出的有关命令。
用户选择菜单中项可触发ActionListener事件,导致actionPerformed(ActionEvent)方法执行相应的操作,例如将创建的雷区设置为初级、中级或高级等。
③main(String[])方法是程序运行的入口方法。
4.2MineArea类
MineArea类是javax.swing包中JPanel容器的子类,实现了ActionListener和MouseListener接口,所创建的对象:
mineArea是MineArea类中最重要的成员之一,作为一个容器添加到窗口的中心。
标明MineArea类的主要成员变量、方法以及和MineGame类之间组合关系的UML图如图4-3所示。
图4-3MineArea类的UML图
以下是UML图中有关数据和方法的详细说明。
(1)成员变量
①block是Block类型的数组,用来确定雷区有多少需进行扫雷的方块。
②blockView是BlockView类型的数组,负责为block数组中的Block对象提供视图。
③lay是LayMines类型的对象,负责设置block数组中的哪些方块是雷或不是雷。
④record负责提供保存成绩的界面,是一个对话框,默认不可见。
用户只有扫雷成功后(用时最少者),才可以看见该对话框。
⑤reStart是一个按钮对象,用户单击它重新开始游戏。
⑥time是计时器对象,负责计算用户的用时。
(2)方法
①initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度、高度、雷的数量以及雷区的级别。
②actionPerformed(ActionEvent)是MineArea类实现的ActionListener接口中的方法。
当用户单击blockView中的某个方块时,actionPerformed(ActionEvent)方法负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若方块下有雷,actionPerformed(ActionEvent)方法将使用户输掉本局,若该方块下无雷,actionPerformed(ActionEvent)方法将显示BlockView对象中的标签,该标签上是一个数字,该数字代表当前方块的周围的8个方块中共有多少颗雷。
③Show()方法是一个递归方法。
actionPerformed(ActionEvent)方法执行时将调用方法进行扫雷。
④mousePressed(MouseEvent)方法是MineArea类实现的MouseListener接口中的方法,当用户按下鼠标右键时,actionPerformed(ActionEvent)方法负责让方块上线是一个探雷标记。
⑤inquireWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让record对话框可见。
所谓扫雷成功是指不仅找到全部的雷而且用时最少。
4.3Block类
Block类创建的对象是数组block的单元中的对象。
Block型数组block是MineArea类的重要成员之一。
标明Block类的主要成员变量和方法以及和MineArea类之间组合关系的UML图如图4-4所示。
图4-4Block类的UML图
以下是UML图中有关数据和方法的详细说明。
(1)成员变量
①name是方块上的名字。
②aroundMineNumber是方块周围雷的数目。
③mineIcon是方块上雷的图标。
④isMine用来表示方块是否是雷。
⑤isMark用来表示方块是否被标记。
⑥isOpen用来表示方块是否被挖开。
(2)方法
①setAroundMineNumber(int)方法用来设置aroundMineNumber的值。
②getAroundMineNumber()方法用来获取aroundMineNumber的值。
4.4BlockView类
BlockView类是javax.swing包中JPanel类的子类,创建的对象是数组blockView的单元中的对象。
blockView是BlockView类的最重要的成员之一。
标明BlockView类的主要成员变量和方法以及和MineArea类之间组合关系的UML图如图4-5所示。
图4-5BlockView类的UML图
以下是UML图中有关数据和方法的详细说明。
(1)成员变量
①blockNameOrIcon用来显示Block对象的name、number和mineIcon属性。
②blockCover用来遮挡card卡片式布局。
(2)方法
①giveView(Blockblock)方法给参数指定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 扫雷 毕业设计