JAVA版扫雷游戏(程序代码+任务书+说明书+外文翻译+演示文稿)_第1页
JAVA版扫雷游戏(程序代码+任务书+说明书+外文翻译+演示文稿)_第2页
JAVA版扫雷游戏(程序代码+任务书+说明书+外文翻译+演示文稿)_第3页
JAVA版扫雷游戏(程序代码+任务书+说明书+外文翻译+演示文稿)_第4页
JAVA版扫雷游戏(程序代码+任务书+说明书+外文翻译+演示文稿)_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA版扫雷游戏摘要在当今社会,互联网技术飞速发展,人们的生活已经越来越离不开网络,特别是电脑游戏,现在已成为很多人休闲娱乐的首要之选。为了满足大家娱乐、休闲、放松的需求,并且能适当开发玩家的智力,为巩固并创新所学知识,所以开发并研究了本课题。本次设计使用的是JAVA语言,其中用到了Java语言的主要特性,GUI编程中的页面布局,JAVA语言中的典型递归算法,精细的随机布雷算法等。另外,本论文是以软件开发流程为线索,介绍了编程语言JAVA以及本课题所用软件Eclipse,本次设计的可行性分析,需求分析,概要设计以及其详细设计,系统测试等。最终,在利用所学知识,参考有关资料之后,设计出符合大众需求,界面简洁的扫雷游戏,并根据设计中的各个阶段、程序所用到的主要技术、代码中的关机语句等编写完成了本论文,希望能为今后windows操作系统中扫雷游戏的发展提供一定的帮助。关键词:Java;扫雷游戏;设计;算法JAVAVersionofMinesweeperAbstractIntodayssociety,therapiddevelopmentofInternettechnology,peoplesliveshavebecomeincreasinglyinseparablefromthenetwork,particularlycomputergames,alotofpeoplenowhavebecomethefirstchoiceforentertainment.Inordertosatisfyyourentertainment,leisure,relaxationneeds,andpropermentaldevelopmentofplayers,inordertoconsolidatetheknowledgeandinnovation,sothedevelopmentandstudyofthissubject.ThisdesignusesJAVAlanguage,whichusesthemainfeaturesoftheJavalanguage,GUIprogramming,pagelayout,Javalanguagetypicalrecursivealgorithm,finerandomBrayalgorithm.Inaddition,thispaperisbasedonthesoftwaredevelopmentprocessasaclue,introducedtheJAVAprogramminglanguageandsoftwareusedinthisprojectEclipse,thefeasibilityofthisdesignanalysis,requirementsanalysis,preliminarydesignanddetaileddesign,systemtesting.Eventually,afterknowledge,referencetotherelevantinformationintheuseoflearning,designedtomeettheneedsofthepublic,theinterfaceissimpleminesweepergame,andaccordingtothevariousstagesofthedesign,themaintechnologyusedintheprogram,codeandotherwrittenstatementscompleteshutdownofthepapers,hopingtoprovidesomehelpforthefuturedevelopmentofwindowsoperatingsystemMinesweepergame.Keywords:Java;Minesweeper;Design;Algorithm0目录摘要.iAbstract.ii1.绪论.11.1课题研究背景与意义.11.1.1.研究背景.11.1.2.研究意义.11.2课题设计目标.21.3系统的开发环境及技术简介.21.3.1设计中所用JAVA语言的主要技术.21.3.2设计中所用JAVA语言的主要特性.41.3.3设计中所用的Eclipse的关键技术.52.需求分析.62.1功能需求.62.2环境需求.72.3用户界面需求.72.4可行性分析.72.4.1可行性研究前提.72.4.2对所建设系统的分析.82.4.3结论意见.83.概要设计与详细设计.93.1概要设计.93.1.1设计的详细设计目标.93.1.2设计的主要算法.93.1.3设计的主要结构.93.2详细设计.103.2.1initGUI()方法.113.2.2go()方法.123.2.3main()方法.123.2.4out()方法.123.2.5actionPerformed()方法.143.2.6mouseClicked()方法.154.编码实现与调试.174.1关键代码介绍.174.1.1程序导入的内容.174.1.2构造方法.174.1.3布雷.184.2设计过程中截图.195.系统测试.215.1测试的目的.215.2测试的原则.215.3系统测试的意义.215.4程序的系统测试.211结论.28参考文献.29致谢.30外文原文.31中文翻译.3601.绪论1.1课题研究背景与意义1.1.1.研究背景近年来,随着计算机的深入普及,越来越多的人有了自己的电脑,计算机也被应用到人类活动的各个领域,人们运用计算机完成许多重要的工作,计算机在人们的生活中变的越来越来重要。随着计算机的应用和发展,计算机已经不单纯是一个工作工具,各种应用软件业相继问世,人们越来越重视计算机的娱乐性了,所以,近年来游戏产业规模持续成长,全球每年游戏业总产值已经突破200亿美金,远远超越好莱坞电影产业以及音乐娱乐事业,而成为目前娱乐事业的最大主流。不过游戏产业光鲜亮丽的背后,却也隐含着高风险、高成本的危机,显示游戏产业慢慢步入“微利时代”。使用游戏软件自然是为了满足人们对娱乐性的要求,而有些软件大都采用3D设计对系统配置的要求较高。目前整个游戏产业的运作模式已经有明确的分工,由专业的游戏研发小组负责研发游戏,也有如微软等国际级大厂负责游戏发行,甚至连“游戏制作人”也被培养成明星一样成为一种招牌,明确的游戏产业分工的确有助于游戏产业的规模发展与进化,但也无形中让游戏开发成本大增。为了降低游戏开发成本,开发娱乐性强、成本低的游戏就成为当前的主要课题,在这种趋势下各种小型的低成本的游戏软件应运而生。在这其中,系统自带的小游戏也占据了相当重要的地位,与那些网络游戏和3D游戏相比,它有编写简单容易上手等特点,非常适合人们在完成工作的时候适当的娱乐要求。这些小游戏大都是以益智和娱乐为目的,不仅给紧张工作的人们以放松,还可以让人们的大脑得到开发。同时,在众多游戏软件中,扫雷游戏属于对系统的配置要求较低的小游戏,能够满足人们对娱乐性和实用性的需求,是人们在完成工作学习娱乐时候的最好选择。现在越来越多的人投入到这种小游戏的开发当中,它已经成为一类必不可少的游戏软件。在各种操作系统中都附带了这些小的游戏,而这些游戏也成为电脑用户软件中不可或缺的一部分。作为本系统的开发工具,JAVA成为首选。因为在目前的程序设计语言中,JAVA处于领先地位,它是一种跨平台的面向对象程序设计语言,具有卓越的通用性、高效性、平台移植性和安全性。广泛应用于游戏控制台、个人PC、数据中心、科学超级计算机、移动电话和互联网等方面,同时拥有全球最大的开发者专业社群,具有显著优势和广阔的前景。所以,本次设计采用JAVA程序设计语言。1.1.2.研究意义随着计算机与网络的普及,人们生活水平的提高,电脑游戏越来越成为人们生活中不可或缺的一部分,尤其是现代社会人们工作压力急剧增加,急于寻求一种排解的方式,同时游戏又有助于大脑智力的开发,不仅可以使玩家在获得娱乐的同时放松心情,而且还可以潜移默化的提高自己的智力,还是免费的,不需要付出任何代价,所以电脑游戏就成了大家的首选。扫雷游戏是Windows操作系统自带的一款小游戏,虽然自Windows操作系统开发以来,已经历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然是该系统装击必备的软件,可见这款小游戏受到越来越多人的喜爱。所以,本次设计就是为了适应社会发展,迎合大众开发的,希望能为今后的扫雷游戏1的发展提供一定的帮助。在学习了四年的软件基础课程之后,我对理论知识已有了一定的了解,理所应当要通过实际动手来对自己所学的知识进行检测,也是对之前所学知识的一种巩固与检查,同时还要从设计过程中学习到新的知识,领悟到Java语言中更深的内涵来拓展自己的知识面。另外,对于设计的扫雷游戏来说,它本身就特别受大众的欢迎,为了使它更加便于使用,在其界面方面及操作方面一定要简洁易懂,方便操作。1.2课题设计目标本次设计的最终目标是使用JAVA语言设计一款功能全面、界面简洁、操作简单的扫雷游戏。扫雷游戏的目标是尽快找到雷区中所有不是地雷的方块,不可以踩到地雷。游戏区的主要界面为雷区,它有多个小方块组成,另外还有地雷计算器、计时器和“开始”按钮等。单击“开始”,计时器就会启动,当单击雷区中的方块时,如果没有踩到雷,则方块显示数字为几,就说明该数字周围一圈的8个位置中有几个雷,如果踩到的事雷,那么游戏结束,即输掉游戏。在游戏过程中可以点击右键来标记自己认为可能是雷的方块,以减少雷的数量。其中,此次设计的重点在于:(1)布雷的算法:即如何进行随机布雷,使每次游戏开始之后界面中的雷可以随意分布;(2)方块周围雷数的计算:扫雷游戏要求在没有雷的方块被点击之后就会显示一个数字表示它周围有几个雷,这就需要把整个游戏区当成一个二维数组来进行设置;(3)页面的设计:此设计的界面要由面板、菜单、按钮等组成,要注意其中的布局、监听等。本文使用JAVA语言设计扫雷游戏。先分析了该设计的可行性以及了解了扫雷游戏的具体需求,然后对游戏的功能和界面都进行了设计,并对系统进行了测试,最终达到了预期的设计目标。1.3系统的开发环境及技术简介1.3.1设计中所用JAVA语言的主要技术JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,它是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的,安全的,结构的,中立的,可移植的,性能优异的多线程的动态语言。本次设计使用的是JAVA语言,利用了它面向对象的特性,其中主要运用到的JAVA技术有:(1)GUI编程,图形用户界面,是程序的一种图示界面。向用户提供了易于交互的工作界面,它包含了按钮、菜单、输入框等图形元素,对于用户来说,这些都是易于识别和操作的,因此用户能够将注意力集中于应用程序的功能上,而不用再执行操作的技巧上花费精力。GUI编程的步骤如下:创建一个容纳GUI组件的容器;选择布局管理器,如果一个容器不使用默认的布局管理器,则为它选择一个新的布局管理器;向容器中添加组件;给组件添加时间监听器,检测并相应每一个GUI组件所被期望的事件。(2)随机布雷算法使用了Math类中的random()方法来实现随机布雷的功能。在JAVA中,用(int)(Math.random()*(max-min+1)+min的语句来设置指定范围内的随机数。(3)递归算法,是把问题转化为规模缩小了的同类问题的子问题,然后递归调用函2数(或过程)来表示问题的解。它是一种直接或者间接调用自身算法的过程,在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。(4)事件处理模型,事件处理有3个组成部分:事件源、事件对象和事件监听者。JAVA的事件处理机制中引入委托事件模型,不同的事件由不同的监听器处理,如图1-1所示的是ActionEvent事件的处理模型。图1-1ActionEvent事件的处理模型图(5)Container类,是所有容器类的父类,该类是一个抽象类,包含了所有容器组件都必须具有的方法和功能,其中比较常用的方法有一下几张,如表1-1所示:表1-1Container类的主要方法方法功能描述add()将组件加入到当前容器中,每个被加入容器的组件按添加顺序获得一个序号getComponent(intindex)获取指定序号的组件getComponent(intx,inty)获取指定坐标(x,y)处的组件remove(Component)将指定的组件移除remove(intindex)将指定序号的组件移除removeAll()将容器中所有的组件移除setLayout()设置容器的布局管理器Validate()验证此容器及其所有子组件(6)Panel,属于无边框容器,是Container类的子类,不能被移动、放大、缩小或关闭。一个程序不能使用Panel作为最外层图形界面的容器,因此,Panel总是作为一个容器组件被加入到Frame等其他容器中。Panel容器组件也可以进行嵌套,即将一个Panel组件加入到另一个Panel组件中。(7)ContainerLayout,布局管理器。它主要包括FlowLayout流式布局,BorderLayout版面式布局,CardLayout卡片式布局,GirdLayout网格式布局等四种布局方式。FlowLayout将GUI组件按照加入的先后顺序,自左向右、自上而下地布局3在容器中;BorderLayout将组件安排在5个区域中,这5个区域分别为North、South、West、East和Center,其中North是容器的顶部;CardLayout能够实现将多组件放在同一容器区域内的交替显示,相当于多张卡片摞在一起,任何时候都只有最上面的一个可见。另外,CardLayout还提供了一个方法,可以显示特定的卡片,也可以按先后顺序依次显示,还可以直接定位到第一张或最后一张;GirdLayout在一个严格的矩形网格结构布局组件,容器被划分为尺寸相等的矩形网格,每个网格中放置一个组件,网格的行数和列数可以再创建GirdLayout对象时指定,采用GirdLayout进行布局管理,容器中的每个组件将占据大小完全相同的一个网格。(8)数组,是存放相同类型数据的集合,即一个容器。在程序中,使用数组时,首先要对数字进行声明,声明数组并不创建一个对象,创建对象时只能用new语句实现。设计要要用到二维数组,它的表示形式为:数据类型数组名。其中,数组对象的成员length可以用来获取数组的长度。以上是本次设计中主要用到的技术,当然在程序中还有很多知识点,由于篇幅问题只列举了较为重要的技术。1.3.2设计中所用JAVA语言的主要特性JAVA具有通用性、高效性、平台移植性和安全性等多种特性。在本次设计中,主要用到了它以下的特点:(1)面向对象,Java吸取了C+面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。(2)安全性,Java的编程类似C+,学习过C+的读者将很快掌握Java的精髓。Java舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。(3)健壮性,Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。并且Java还提供了Null指针检测、数组边界检测、异常出口、Bytecode校验等功能。(4)动态性,java程序的基本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分部环境中动态的维护程序及分类,而不像C+那样,没档期类库升级以后,如果想让程序具有新类库提供的功能,就需要修改程序,重新编译。另外,在平时使用JAVA语言时,还会用到以下特性:(1)平台无关性,指Java能运行于不同的平台。Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关,Java虚拟机(JavaVirtualMachine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。(2)分布式,Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP4协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。(3)解释性,我们知道C,C+等语言,都是针对CPU芯片进行编译,生成机器代码,该代码的运行就和特定的CPU有关。Java不像C或C+,它不针对CPU芯片进行编译,而是把程序编译成称为自字节码的一种“中间代码”。字节码是很接近机器码的文件,可以在提供了Java虚拟机(JVM)的任何系统上被解释执行。1.3.3设计中所用的Eclipse的关键技术本次设计所使用的工具为Eclipse,在设计过程中在Eclipse上编写并运行JAVA程序。正是利用它是一个开放源代码的、基于JAVA的可扩展开发平台,所以作为了本次设计使用工具的首选。然而,就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括JAVA开发工具(JavaDevelopmentKit,JDK)。Eclipse最初由IBM开发,目的是成为所有IBM开发工具产品提供支持的平台,以避免对基础结构中的最通用元素的重复。这将使得用户在不同平台之间的切换的体验更加愉快。虽然大多数用户很乐于将Eclipse当作JAVA集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于JAVA开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于JAVA语言;例如,支持诸如C/C+、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect,它构成了IBMJAVA开发工具系列的基础。Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来JAVA语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C+和Python等开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。Eclipse项目IBM发起,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。Eclipse是一个开放源码项目,它其实是VisualAgeforJava的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。随后还有包括Oracle在内的许多大公司也纷纷加入了该项目,Eclipse的目标是成为可进行任何语言开发的IDE集成者,使用者只需下载各种语言的插件即可。52.需求分析扫雷游戏是以娱乐休闲为主的小型游戏,不仅可以使玩家休闲放松,调整心情,消磨时间,而且还可以锻炼并拓展玩家的观察能力与思维能力。它适用于学生、公务员、白领等各种人群。这个游戏玩一局所需的时间很短,最多只需几分钟,这样既有助于大家放松心态,又不需花费太多时间,而且操作简单,也不需要进行缴费,只需一台电脑即可开始游戏,所以受到了大家的广泛认可和欢迎。下面就本次设计的各个需求进行分析,从而确定具体的设计内容。2.1功能需求功能需求是指所开发软件系统必须提供的服务,划分出系统完成的所有功能,它规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。功能需求有时也被称作行为需求,因为习惯上总是用“应该”对其进行描述,功能需求描述是开发人员需要实现什么。值得注意的是:用户需求不总是被转变成功能需求。另外,产品特性是指一组逻辑上相关的功能需求,它们为用户提供某项功能,使业务目标得以满足。对商业软件而言,特性则是一组能被客户识别,并帮助他决定是否购买的需求,也就是产品说明书中用着重号标明的部分。客户希望得到的产品特性和用户的任务相关的需求不完全是一回事。一项特性可以包括多个用例,每个用例又要求实现多项功能需求,以便用户能够执行某项任务。所以,由此看来,功能需求是需求分析过程中最重要的,也是必须提前考虑的,那么,根据平时对扫雷游戏的了解,确定应具有以下功能:(1)玩家在显示为“游戏”的菜单中可以自己选择游戏初级、中级、高级三个级别,且根据级别不同,雷数也会相应的不同;(2)游戏具有计时功能,当玩家点击开始按钮后,即可显示玩家玩游戏所花费的时间;(3)玩家可以右键标记雷,即根据游戏规则,在玩的过程中,判断出哪个方块是雷时,可以单击右键,这时此方块显示为“”,在之后玩的过程中就不会去点击这个方块;(4)游戏具有显示雷数的功能,当玩家选择级别之后,雷数计数器会显示相应的雷数,在游戏开始后,当玩家判断出某一方块是雷,且用右键进行标记之后,雷数计数器相应的减一,要注意的是,无论此方块是否为雷,雷数计数器均会减一;(5)玩家在显示为“帮助”的菜单中可以选择“游戏说明”和“关于扫雷”两个菜单项。点击“游戏说明”时会弹出一个消息提示框,显示此扫雷游戏的主要玩法,方便第一次玩此游戏的玩家尽快懂得游戏技巧。点击“关于扫雷”时,又会弹出一个消息提示框,显示有关扫雷游戏的简介,说明了它受欢迎的原因。(6)在游戏过程中,当玩家点击某个方块,未踩到雷时,此方块显示的数字必须6保证与其周围8个方块中所包含雷数相同。(7)整个游戏的显示界面是一个面板,标题可以进行自定义,与普通面板一样,可以进行最小化、最大化和关闭。(8)当玩家在游戏过程中把所有雷全部并且正确找出时,系统会自动显示“你赢了!”的消息,相反,当玩家点击的方块是雷,即踩到雷时,系统会自动显示“你输了!”的消息。下面,在具体分析了扫雷游戏需要具有的功能之后,绘制出了如图2-1所示的功能需求组织结构图:图2-1功能需求组织结构图2.2环境需求该扫雷游戏系统运行的软件环境为Eclipse平台,所用电脑机型为惠普ProBook6450b。2.3用户界面需求本次扫雷游戏设计界面分为两大块,即菜单区和雷区。菜单区包含游戏(点击可选择初级、中级、高级),帮助(可查看扫雷游戏说明,点击可选游戏说明和关于扫雷两项),计时器(显示游戏进行时间),开始(点击可开始游戏)以及雷数显示器(显示玩家标记后的剩余雷数)。雷区由许多小方块组成,根据级别不同,方块数目不同,初级为9*9的正方形游戏区,中级也为16*16的正方形游戏区,而高级为16*32的长方形游戏区。2.4可行性分析2.4.1可行性研究前提本次设计完成了扫雷游戏的一些基本功能,利用java语言编写,其中具体设计要求如下:7(1)游戏界面分为菜单区和雷区。游戏级别分为初级、中级和高级三个级别,点击菜单区中的游戏可以选择级别。(2)选择级别后将出现相应级别大小的雷区,玩家左击鼠标时计时器开始计时。当单击雷区中的方块时,如果没有踩到雷,则方块显示数字为几,就说明该数字周围一圈的8个位置中有几个雷,如果踩到的事雷,那么游戏结束,即输掉游戏。(3)玩家在游戏过程中可以点击右键来标记自己认为可能是雷的方块,以减少雷的数量(注意不管所标记的是否为雷,雷数都会减一)。若玩家把所有非雷的方块找出则胜利。本次设计需达到的目标即程序在Eclipse之上跑起来,并拥有以上所说的全部功能,另外尽可能使界面更为美观,功能更加丰富。2.4.2对所建设系统的分析下面将分别从经济、技术、操作、法律等方面进行该游戏设计的可行性分析:(1)经济可行性:开发此游戏所需成本即为人力成本与物力成本,开发人员是本人,系在校大学生,且此开发为毕业设计,必须完成的任务,所以不存在人力成本。所用物力为一台电脑与几本参考书,而电脑与参考书之前就有,并不是专为此次开发而准备,故物力成本主要为电费。而此开发潜在的市场前景较为光明,由于此游戏受欢迎程度较高,所以收益定会远大于成本,故此开发经济可行。(2)技术可行性:该游戏由JAVA语言编写,由于本人在学校中学习过java程序设计实用教程,还在培训过程中学习了corejava,所以对java语言有一定的掌握程度。另外现在网络较为发达,还可以在学校图书馆登陆中国知网,查找资料十分方便,故此开发技术可行。(3)操作可行性:本次开发使用Eclipse软件进行编程,由于程序可以跑起来,所以证明在这个应用范围内系统的操作方式行得通。(4)法律可行性:扫雷游戏不与任何法律或国家相关规定相抵触,在法律上可行性是通过的。另外在设计过程中没有任何违法违规操作,也不会对任何企业的系统进行侵权,更不会侵犯他人、集体和国家的利益,故本次开发在法律上可行。2.4.3结论意见经过对项目的性能、要求和基本功能的了解,并从经济、技术、操作和法律四个方面进行了可行性分析,最终,得出结论,项目可以开发。83.概要设计与详细设计3.1概要设计3.1.1设计的详细设计目标本次设计参考Windows操作系统自带的扫雷游戏,包含了其所有基本功能,具体设计目标如下:(1)游戏要包含初级、中级、高级三个级别,且级别不同,游戏的难度也会不一样;(2)玩家想要进行游戏时,必须点击开始按钮;(3)游戏开始之后,计时器开始以秒为单位开始计时;(4)游戏主要使用的鼠标进行操作,左键可以点击按钮,菜单等,右键用来进行标记雷;(5)当某个方块被标记后,雷数计数器减一;(6)所有的雷全部找出且没有雷的方块均已点开以后,游戏胜利,相反,踩到雷时,游戏失败;(7)帮助菜单中包含游戏说明和关于扫雷两个选项,点击二者均可出现一个消息提示框,分别用来显示此扫雷游戏的主要玩法和扫雷游戏的简介,方便第一次玩此游戏的玩家尽快懂得游戏技巧,同时还说明了它受欢迎的原因。(8)另外,对于界面来说,要求简单易懂,符合大多数玩家的审美要求,所有功能可以使人一目了然。(9)在程序编写完成之后,避免出现运行错误、无法显示窗口等问题,同时,要做到代码规范。3.1.2设计的主要算法扫雷游戏的设计中,算法思想是最为重要的,本次设计中的主要算法使用的是随机分布和计算某一方块周围的雷数。扫雷游戏要求在雷区随机的布上bon个雷,且雷数的总量应小于行列的乘积。其中bon的方块是雷区,其余的方块是非雷区,游戏的目标就是找到所有的地雷,并把它们标记出来,以防止踩到地雷。为了实现这一随机分布的目的,本次设计使用了Math类中的random()方法。扫雷游戏还要求在没有雷的方块被点击之后就会显示一个数字表示他周围8个方块中有几个是雷,这里用到了二维数组,使用了递归方法,用于设置各个雷区中的方块9显示内容及其周围8个方块的情况,即在检查过方块本身不是雷后,可以把余下的上方、右上方、右下方、下方、左下方、左上方的方块的情况判断出来。3.1.3设计的主要结构本次扫雷游戏设计,编写了一个java源程序:Minesweeper.java,其中包含了两个类:Minesweeper类和NormoreMouseEvent类,在Minesweeper类中拥有5个方法:initGUI()方法、go()方法、main()方法、out()方法和actionPerformed()方法;而NormoreMouseEvent类中有一个方法:mouseClick()方法。在我的设计中,按方法来划分模块,把一个方法分成一个模块,故有六个模块。下面将把各个类与方法之间的调用关系展示如图3-1:图3-1类与方法之间调用的关系(1)initGUI()声明初始化图形界面方法,创建了菜单、菜单项等,并把各个菜单加入到菜单栏中,并设置了容器的布局,设置雷区的宽度,高度以及雷区的级别,还为各个按钮添加了事件监听器;(2)go()方法设置显示窗体;(3)main()是程序的主方法,用来实例化窗体对象,调用go()方法将窗体显示在屏幕之上;(4)out()方法是一个递归方法,用于设置各个雷区中的方块显示内容及其周围8个方块的情况;(5)actionPerformed()方法负责执行有关算法,分别从初级、中级、高级各个级别来调用out()方法进行扫雷;(6)mouseClicked()方法是NormoreMouseEvent类中的一个接口方法。该方法当鼠标单击时会触发。3.2详细设计在详细设计中,主要考虑了声明各个对象,设置各种点击内容及细化概要设计中提到的两个类,六个方法中的具体内容。详细设计是整个设计过程中用时最长的一个阶段,它除了要细化各个方法中的具体功能,还要考虑代码的规范性以及界面的美观10性等各种具体细致的问题。首先,根据上面提到的扫雷游戏的具体功能和实现,描述出了它的系统流程图,如图3-2所示:是否否是图3-2流程图开始左键点击雷区中的方块所点方块是雷方块中显示的数值表示周围8个方块中所含雷数认为该方块时雷则右键标记,同时雷数减一所有雷均被找出玩家获胜游戏结束11接下来,根据概要设计中划分的六个模块,对其进行具体分析,解读其中的主要代码意义:3.2.1initGUI()方法initGUI()方法中创建了面板、菜单栏、游戏菜单、帮助菜单、初级菜单项、中级菜单项、高级菜单项、游戏说明菜单项和关于扫雷菜单项等。使用addActionListener(this)来为各个级别的菜单项加入动作事件监听器,当点击鼠标左键时菜单项会执行actionPerformed(ActionEvente)方法。关于布局,开始使用BorderLayout边界布局,把面板分为东西南北中五大块,具体代码为:p=newJPanel();p.setLayout(newBorderLayout();contentPane.add(p);随后又使用GirdLayout网格布局,使中间部分划分成网格,设置为雷区,具体代码为:p2=newJPanel();p2.setLayout(newGridLayout(row,col,0,0);for(inti=0;i-1&n-1&mrow;if(n+col*q)=(m*col)&(n+col*q)-1&n-1&m=(m*col)&(n+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论