




已阅读5页,还剩67页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用JAVA开发连连看游戏摘要社会在发展,人类在进步,生活质量保证之余,各种游戏蜂拥而起,越来越受到各界人士的追捧,比如老少适宜的斗地主,深受广大女性喜欢的节奏大师,受高智商人群喜欢的棋牌类游戏等等,而连连看游戏是无人不知无人不晓的其中之一。我这次的毕设题目是“使用JAVA开发连连看游戏”,改项目使用JAVA语言为母本,以ECLIPSE为开发工具,用SWING组件为父本,进行游戏开发。这次毕业设的主要想法就是应用SWING组件和处理事件技术,绘制界面,通过代码实现随机二维数组,此外点击鼠标来实现各项功能。连连看游戏除了实现以往版本的普通消除功能,还实现了特殊消除功能,即任意位置只要两张图片相同即可消除,此为这次毕业设计的最大亮点。此外我还对这次毕业设添加了背景音乐以炸弹功能,在用户体验方面做出了很大的思维突破。通过此次连连看游戏的设将,使我深刻理解了SWING组件,事件处理,JAVA语言的三大特性封装,继承,多态。这些都将为我以后开发程序打下了坚实的意识基础和能力基础。关键词连连看;SWING;数组LIANLIANKANGAMEUSINGJAVADEVELOPERSABSTRACTSOCIALDEVELOPMENT,HUMANPROGRESS,IGUARANTEETHEQUALITYOFLIFE,AVARIETYOFGAMESSWARMEDINTOTHESKY,MOREANDMORESOUGHTAFTERBYALLWALKSOFLIFE,YOUNGANDOLD,SUCHASTHEAPPROPRIATELANDLORDS,THEMAJORITYOFWOMENLIKETHERHYTHMMASTER,BYINTELLIGENTPEOPLEFAVORITEREADINGS,ETC,ANDJAMGAMEISONEIDONOTKNOWSOMETHINGWELLKNOWNUNMANNEDIHAVETHECOMPLETESETENTITLED“LIANLIANKANGAMEUSINGJAVADEVELOPERS“CHANGEPROJECTUSINGTHEJAVALANGUAGEASFEMALETOECLIPSEASADEVELOPMENTTOOL,WITHTHEPARENTOFTHESWINGCOMPONENTS,FORGAMEDEVELOPMENTTHECOMPLETESETOFTHEMAINIDEAISTOUSESWINGCOMPONENTSANDTECHNOLOGYTOHANDLETHEEVENT,DRAWINGINTERFACE,TWODIMENSIONALARRAYBYARANDOMCODE,INADDITIONTOACHIEVINGTHECLICKOFAMOUSEFUNCTIONSNAKEGAMEINADDITIONTOACHIEVINGTHEELIMINATIONOFTHEPREVIOUSVERSIONOFTHECOMMONFEATURES,BUTALSOTOACHIEVETHEELIMINATIONOFTHESPECIALFEATURESTHATANYPOSITIONCANBEELIMINATEDASLONGASTHESAMETWOPICTURES,THISISTHEBIGGESTHIGHLIGHTOFTHECOMPLETESETBESIDESTHIS,IALSOADDEDACOMPLETESETOFBACKGROUNDMUSICTOBOMBFUNCTION,THEUSEREXPERIENCEHASMADEAGREATBREAKTHROUGHTHINKINGTHROUGHTHISSNAKEGAMEDESIGNWILLMAKEMEADEEPUNDERSTANDINGOFTHESWINGCOMPONENTS,EVENTHANDLING,THETHREECHARACTERISTICSOFJAVALANGUAGEENCAPSULATION,INHERITANCE,POLYMORPHISMALLTHESEWILLILATERDEVELOPEDTHEPROGRAMLAIDASOLIDFOUNDATIONANDTHEABILITYTOSENSETHEFOUNDATIONKEYWORDSLIANLIANKANGAMESWINGARRAYS目录摘要IABSTRACTII第一章绪论1一、连连看游戏开发介绍1二、游戏的发展概况1三、游戏操作2四、游戏设计的目的2第二章系统需求分析3一、游戏玩法说明和功能说明3二、游戏可行性论证4三、主要问题4四、技术要求4五、设计要求4(一)开发环境及工具4(二)理论基础5(三)开发环境及工具介绍5第三章系统的概要设计8一、引言8(一)编写目的8(二)设计背景说明8二、总体设计8(一)需求规定8(二)运行环境9(三)功能需求与程序的关系9(四)各个功能按钮的介绍9(五)基本设计概念和处理流程10三、接口设计10(一)用户接口10(二)外部接口11(三)内部接口11四、运行设计11(一)运行控制11(二)运行时间11五、系统数据结构设计11(一)逻辑结构设计要点11第四章系统的设计与实现12一、游戏的设计12(一)功能设计12(二)模块设计15(三)算法设计17(四)类的设计18二、游戏的实现19(一)关键算法的实现19(二)游戏界面实现25(三)游戏算法31第五章系统的运行及测试33一、游戏运行情况33二、测试计划和异常处理37三、软件测试综述37(一)本游戏开发过程中的软件测试38(二)测试用例39结论43参考文献44致谢45外文原文46中文翻译60第1章绪论1、连连看游戏开发介绍JAVA2平台包括标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)这三个版本。J2SE主要用于编写应用软件;J2ME主要用于开发嵌入式系统,如手机操作系统和PDA(PERSONALDIGITALASSISTANT),即掌上电脑的编程;J2EE主要用于网络程序的分布式开发,如电子商务信息网站和ERP(企业资源计划系统)的开发。目前电脑电子科技的出产物,以JAVA2游戏产业为首,全世界范围内的游乐领地被其特殊的乐趣所占领,连连看游戏最初来源为台湾某知名企业旗下的桌面游戏,自从传入大陆之后便风云骤起,以其简洁的页面以及简答的游戏方式,立即火爆起来。让玩家爱不释手,因为版本一再增多,却经久不衰,老而弥坚。由此本人便萌生了编写一个连连看游戏的想法,从而采用SWING组件来编程,以此来致敬互联网游戏行业,以及将编程思想深入渗透到生产与生活当中去。2、游戏的发展概况随着互联网的飞速发展,网民数量的增加,各种网络游戏,网页游戏,正在被大批玩家所接受和根植到生活中,部分游戏玩法复杂,费脑伤神,然而不少经典益智小游戏却上手简单,因此受到众多不同年龄段的玩家的追捧。连连看游戏便是其中的佼佼者。无论在哪个网站或者知名网页都存在着“小强”连连看,并且排名一般名列前某,因其具有独特魅力,深受各个年龄段的玩家喜爱,有孩子,青年,也有中年人,老年人。娱乐、情趣、益智是连连看游戏的精髓。连连看游戏,只要用三根以内的直线,将两张相同的图片连在一起,就可以进行消除,简单的规则,使玩家上手容易。游戏节奏明快,清晰界面精巧图片,适合玩家细心把玩。网页版中有丰富的道具,加入的公共模式,良好的竞争性。明艳的各种地图片,使玩家拥有良好的体验效果,同时在各个游戏级别,都可以找到目标来挑战,从而长远的地对游戏保持新鲜感与神秘感。连连看游戏是桌面小游戏,最初来自台湾。自从传播进入内地便风靡一时,因为吸引着大多数的程序员去开发各种版本。其中,王达编写的“阿凡达连连看”制作精良而受到海内外玩家的好评,比如国内最知名的“阿凡达系列软件”的骨干产品。因此在2004年,国家版权局将计算机软件著作,权威登记证书授予此项游戏。伴着FLASH动漫技术的发展与传播,互联网涌现出现诸多“连连看”在线FLASH版本。比如“砖石连连看”、“蔬菜连连看”等,流行的“水晶连连看”以绚丽简介的界面吸引了一大批的女性玩家来玩耍。2008年,社交网络普及全球,平台开放的盛行,“连连看”被注入到社交网络里面。此后“连连看”与QQ空间,百度空间相结合,传播速度飞速向前,热门的社交游戏由此被连连看开辟了新天地,其中开发者COM历时半年开发且放在漫心游戏开放平台上,推出的“宠物连连看”最受欢迎。3、游戏操作使用鼠标点击界面上中的任一张图片,该图片此时处于“被选中”形态,用不同的样式显现出来;然后用鼠标点击其它图片,如果此时选中图片与首次被点击的图片一样,以及把第一张图片和第二张图片连起来的方式为连线不多余3根,则此时可以消除这一对图片,否则第一张图片变为“未被选中”形态,而第二张图片被标记为“选中”状态。前提条件连连看游戏界面上有15中图片,共64张,对此进行消除操纵。1失败条件玩家选择牌进行消除的时间为80秒,超过时间而未消除全部图片,此时系统宣布玩家游戏失败。2胜利条件玩家选择牌进行消除的时间为80秒,在规定时间内消除全部图片,此时系统宣布玩家游戏胜利。4、游戏设计的目的经过这次毕业设计,首先我学会了怎么去制作一个游戏程序,以及制作游戏程序的整个开发步骤以及开发原理,JAVA变成的精髓内含。因此我熟悉了项目开发的完整过程,这些为即将到来的毕业,找工作打下了坚实的地基。此外通过本次毕业设计,将四年年来所学的各种诸如数据库,数据结构等专业知识,以及其他方面的例如如何和别人沟通,如何精简代码,如何撰写论文等知识融入到实际生活中。在设计连连看的过程中学习,熟练掌握JAVA开发的核心思想,百尺竿头更进一步精确记忆JAVA设计语言的三大内含功效、基本操作和基本方法,同时锻炼了考虑问题、处理问题的能力;锻炼了我进行设计思想、设计问题、实际操作与实际测试、开发过程中对进度的把握、理解问题和归纳文档等能力的加强。1通过编写连连看游戏,熟练JAVA代码开发的环境搭建,路径配置,提高自己JAVA程序编写代码和数据操作的内在能力。2更大一步熟悉掌握JAVA程序设计的核心思想。如(GUI)用户图形化界面的设计、JAVA多线程编程,SWING布局管理器的设置。3熟练掌握如何用JAVA代码来编写各种游戏,增强我的动手实践能力和创新思想的综合素质培养与发展。4JAVA技术的开放性、安全性和庞大的社会已有资源,以及其跨平台性,即“编写一次,到处运行”的特点,使JAVA技术成为智能手机软件平台的事实标准。采用JAVA技术后,编写应用程序和提供服务的人就不必关心接受其服务的手机采用的是什么操作系统和芯片,只要按照JAVA的要求去写程序就好了;同样,生产手机的厂商也不必顾虑将来谁来提供增值服务。可以看出,采用JAVA技术,可以建立完整、高效的无线数据增值服务产业链,从而为用户提供灵活、个性化、内容方式多样的服务。第2章系统需求分析系统需求分析是对所要完成的项目进行具体分析,经过使用文字以及图表的单一或者综合形式分析,用相对容易让程序员理解的方式去描述需求的数据类型、功能实现、行为方式,甚至可以直接评判它的正确性、完美性和一致性。通过查找相关文献资料,对所做的项目进行数据分析,资料整理,做出以下的系统分析。1、游戏玩法说明和功能说明游戏规则选择一对相同的图片,但此次两张图片相连接是在避开其它图片之后,显现的路径以不超过两个转弯处为准,如满足规则会消除这一对图片而成功。每局游戏里面玩家需要在80S时间内对所有的图片进行消除,则可以完成消除任务并取得胜利。点击鼠标左键1次即为选择图片;点击鼠标右键即为放弃选择图片;对同一图片用鼠标左键连续点击2次即为放弃选择图片;对于游戏一些操作的说明游戏时间为80S,玩家必须在此时间内完成游戏否则闯关失败刚开始游戏系统会默认送给玩家三枚炸弹,在玩家觉得游戏局面一片茫然的时候供玩家使用。当玩家对目前图片随机布局不满意时可以点击重新开始按钮,此时系统会变换图片的位置,以此来给玩家更好的体验。当玩家不想继续进行游戏的时候可以点击重新开始按钮,此时系统会变换图片的位置,以此来给玩家更好的体验。游戏帮助,在游戏帮助里面,玩家可以查看游戏规则,胜负条件,以此来给玩家更好的体验。游戏说明,游戏说明里面可以查看游戏版本,游戏信息以及作者的相关信息,以此来给玩家更好的体验。功能说明【开始】玩家自己通过消除所有图片,通关游戏【退出】不想继续连连看游戏时可以点击此按钮【重新开始】关闭当前游戏,开始另一组图片,进行再次消除【炸弹】系统默认提供三枚炸弹,此炸弹的功能为炸掉一张图片。【暂停/取消暂停】当玩家需要思考怎么消除的时候,可以点击“暂停”按钮来使时间停止,思考完毕之后可以点击“取消暂停”按钮,来继续游戏【游戏音乐】默认在游戏开始之后即为启动项,令玩家在美妙的音乐声中获得心里的舒缓与享受,更能激发玩家玩游戏的兴趣【特殊玩法】本人独创,只要是两张相同图片,不论位置如何点击即可进行消除2、游戏可行性论证连连看游戏,是一款经典的游戏,因为操作方便、游乐性极强而受到不同年龄段玩家的喜欢。我通过熟悉的JAVA编程语言,使用ECLIPSE开发工具,编码实现了一个操作便捷、界面简介、功能完备的连连看游戏。经过此次游戏的开发,深入了解了JAVA编程思想,GUI开发技术的内涵,掌握了软件开发的基本流程。此次毕业设计开发的连连看游戏是使用图形化界面来实现的,通过ECLIPSE代码编译器解释翻译后显现一幅图形化界面。界面最上端有一行可选菜单栏,点击菜单栏上各个的按钮,会出现不同的下拉菜单,点击“开始”按钮进入连连看游戏界面,游戏界面是由64个方格子组成,每一个小方格被一个图片覆盖着,用鼠标点击其中任一张图片,之后再次进行选择,下一张图片,如果两次选择的图片相同,则可进行消除,如果不同则点击之后没有任何效果。在算法层面,如果复合代码中要求的算法,满足条件的消除方式就会使图片消失,并且游戏有一定的时间限制,否则没有任何意义。此外游戏还设置有炸弹功能、退出功能、帮助功能等操作简单的按钮,以便玩家对游戏进行操作。3、主要问题开始着手开发连连看游戏初期,有以下几个方面的问题存在如何“画出”游戏主界面;如何通过代码控制,来实现连连看游戏中图片随机生成;生成后的每种图片必须为偶数张;当游戏开始之后,如何判断鼠标在选择两次之后的图片是否能消去,也就是说图片是不是相同并且判断图片之间路径是否满足要求;如何实现游戏是否结束;结束之后是否输赢;游戏限制玩法及规则。4、技术要求熟练的JAVA编程技巧以及良好的算法基础,以此做铺垫,外加参考部分资料和得到指导老师的耐心指导。5、设计要求(1)开发环境及工具1开发工具JDK16,ECLIPSE2开发技术J2SE,GUI,多线程。3操作系统MICROSOFTWINDOWS8。4开发语言COREJAVA。(2)理论基础1JAVA语言基础知识JAVA是一种简单,面向对象,跨平台,解释,性能很优异的多线程,分布式,可移植,安全,结构,健壮,中立,动态语言;从1995年被SUN公司推出之后,全世界的目光,都被这个的新奇的语言所感染。COREJAVA语言包括对标识符的设置、运算符的编写,命名的规范;表达式的书写、数据类型的设定、语句的循环;类的产生、接口的多样化、方法的使用、包的查找等知识的应用以及理解解释。2GUI编程语言GUI是(GRAPHICALUSERINTERFACE)的缩写,意思是图形用户界面,是基于图形的界面,例如WINDOWS就是一个图形用户界面的操作系统。GUI布局管理包括流式布局管理器(FLOWLAYOUT)排列顺序为从左到右;边界布局管理器(BORDERLAYOUT)排列顺序为东,南,西,北,中;网格布局管理器(GRIDLAYOUT)。事件处理机制包括事件源事件发生的组件;事件用户操作组件;监听器如果某个事件需要我们处理,就需要添加监听器在发生事件的组件之上。事件处理器监听器中的各种方法。在组件上添加监听器被之后,组件上面便发生了对对应事件执行指定的方法;动作事件ACTIONEVENT,在组件上产生并执行之前设定的动做,比如点击鼠标上的按钮或者点击空格按钮,鼠标点击菜单上按钮或者按回车按钮等。3ECLIPSE基本操作ECLIPSE中新建项目,打开项目等基本操作。如何用快捷方式自动生成SET方法和GET方法,以及对一些JAR包的导入,项目的导入以及导出等操作方法的实现。(3)开发环境及工具介绍(1)JDK简介JAVA是一种可以编写跨平台软件,面向对象的设计语言,由SUN公司在1995年5月推出的。JAVA程序设计语言和JAVA平台(即JAVASE,J2EE,J2ME)的总称。JAVA技术具有卓越的高效性、通用性、平台移植性、安全性,广泛应用于个人PC、游戏控制台、数据中心、科学超级计算机、移动电话以及互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,JAVA更具备了显著优势和广阔前景。JDKJAVADEVELOPMENTKIT是SUN公司针对JAVA开发员的产品。自从JAVA发布以来,JDK已经成为使用最广的JAVASDK。JDK是整个JAVA的核心,包括了JAVA运行环境,JAVA工具集和JAVA基本的类库。了解JDK是JAVA开发必须经历的一步。从SUN的JDK50开始,提供了泛型等十分便捷的实用功能,版本也不断更新和发行中,运行速率得到了非常大的改变以及完善。(2)JDK各个版本的特性1997年SERVLET技术的产生以及紧接着JSP的产生,为JAVA对抗PHP,ASP等等服务器端语言带来了筹码。1998年,SUN发布了EJB10标准,至此J2EE平台的三个核心技术都已经出现。于是,1999年,SUN正式发布了J2EE的第一个版本。并于1999年底发布了J2EE12,在2001年发布了J2EE13,2003年发布了J2EE14。J2EE13的架构,其中主要包含了APPLET容器,APPLICATIONCLIENT容器,WEB容器和EJB容器,并且包含了WEBCOMPONENT,EJBCOMPONENT,APPLICATIONCLIENTCOMPONENT,以JMS,JAAS,JAXP,JDBC,JAF,JAVAMAIL,JTA等等技术作为基础。13中引入了几个值得注意的功能JAVA消息服务(定义了JMS的一组API),J2EE连接器技术(定义了扩展J2EE服务到非J2EE应用程序的标准),XML解析器的一组JAVAAPI,SERVLET23,JSP12也都进行了性能扩展与优化,全新的CMP组件模型和MDB(消息BEAN)。J2EE14大体上的框架和J2EE13是一致的,14增加了对WEB服务的支持,主要是WEBSERVICE,JAXRPC,SAAJ,JAXR,还对EJB的消息传递机制进行了完善(EJB21),部署与管理工具的增强(JMX),以及新版本的SERVLET24和JSP20使得WEB应用更加容易。JAVAEE5拥有许多值得关注的特性。其中之一就是新的JAVASTANDARDTAGLIBRARYJSTL12规范。JSTL12的关键是统一表达式语言,它允许我们在JAVASERVERFACESJSF中结合使用JSTL的最佳特性。(3)JREJRE(JAVARUNTIMEENVIRONMENT,JAVA运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及JAVA核心类库。JRE为JAVARUNTIMEENVIRONMENT的简称,JAVARUNTIMEENVIRONMENT(包括JAVAPLUGIN)是SUN的产品,包括两部分JAVARUNTIMEENVIRONMENT和JAVAPLUGIN。JAVARUNTIMEENVIRONMENTJRE是可以在其上运行、测试和传输应用程序的JAVA平台。它包括JAVA虚拟机(JVM)、JAVA核心类库和支持文件。它不包含开发工具JDK编译器、调试器和其它工具。JRE需要辅助软件JAVAPLUGIN以便在浏览器中运行APPLET。JAVAPLUGIN软件允许JAVAAPPLET和JAVABEAN组件在使用SUN的JAVARUNTIMEENVIRONMENTJRE的浏览器中运行,而不是在使用缺省的JAVA运行环境的浏览器中运行。JAVAPLUGIN可用于NETSCAPENAVIGATOR和MICROSOFTINTERNETEXPLORER。J2RE是JAVA2RUNTIMEENVIRONMENT,即JAVA运行环境,只是强调其匹配JAVA2平台,有时简称JRE。如果你只需要运行JAVA程序或APPLET,下载并安装它即可。如果你要自行开发JAVA软件,请下载JDKJRE和JDK的区别。在JDK中附带有JRE。注意由于MICROSOFT对JAVA的支持不完全,请不要使用IE自带的虚拟机来运行APPLET,务必安装一个JRE或JDK。(4)ECLIPSE简介ECLIPSE是一个源代码开放的、以JAVA为基础的可扩展开发代码平台。对于其本身来说,它仅仅是一个框架,一组服务。用于搭建开发环境通过使用插件组。然而,ECLIPSE本身含带了一个标准化的插件集合,包括JAVA开发工具(JDK),这使得ECLIPSE异常强大。尽管大多数开发人员对将ECLIPSE当作JAVA集成开发环境,来使用并对此乐此不疲,但是ECLIPSE的目的却不只局限于这些。ECLIPSE含有插件开发环境(PDE),这个组件主要被希望扩展ECLIPSE的软件程序员所喜欢,因为它不但允许程序员构建环境而且开发与ECLIPSE环境天衣无的缝集成的工具集合。应为ECLIPSE中的几乎每件东西都为插件,对于为ECLIPSE提供更多的插件,且给使用者提供格式一样,统一开发的集成代码环境来说,一切工具使用开发者都应该拥有同等的发挥思想和开发内涵的编程场所。这样子的平等性和开发一致性并不仅仅限制于JAVA开发工具集。ECLIPSE主要是用来开发JAVA语言的,但是它的用途广泛,并不只是用来开发JAVA语言。例如,支持譬如C和C等编程语言,的插件研发已经可以进行使用,拟将会推出更多语言开发的插件,到时将会出现一个开发工具网罗天下语言开发,届时ECLIPSE将席卷全球,受到更多开发人员的喜爱。ECLIPSE开发框架还可用来开发别的东西,与软件代码开发没有关系,却与其它应用程序开发类型的公共基础,譬如文档管理设备系统。以ECLIPSE为基础开发应用程序,的最知名例子是便是SOFTWAREARCHITECT,IBMJAVA开发工具集合的理论基础便是由此构成。ECLIPSE专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由ECLIPSE项目、ECLIPSE工具项目和ECLIPSE技术项目三个项目组成,具体包括四个部分组成ECLIPSEPLATFORM、JDT、CDT和PDE。JDT支持JAVA开发、CDT支持C开发、PDE用来支持插件开发,ECLIPSEPLATFORM则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。ECLIPSEPLATFORM允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。ECLIPSESDK(软件开发者包)是ECLIPSEPLATFORM、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到ECLIPSEPLATFORM中的工具。到时将会出现一个开发工具网罗天下语言开发,届时ECLIPSE将席卷全球,受到更多开发人员的喜爱。ECLIPSE开发框架还可用来开发别的东西,与软件代码开发没有关系,却与其它应ECLIPSESDK由ECLIPSE项目生产的工具和来自其它开放源代码的第三方软件组合而成。ECLIPSE项目生产的软件以GPL发布,第三方组件有各自自身的许可协议。ECLIPSE以其强大的功能,和简洁却不失功能齐全的操作受到了广大软件开发者的喜欢,能在各种开发软件中脱颖而出,与其特有的操作方式分不开,尽管大多数开发人员对将ECLIPSE当作JAVA集成开发环境,来使用并对此乐此不疲,但是ECLIPSE的目的却不只局限于这些。ECLIPSE含有插件开发环境(PDE),这个组件主要被希望扩展ECLIPSE的软件程序员所喜欢,因为它不但允许程序员构建环境而且开发与ECLIPSE环境天衣无的缝集成的工具集合。应为ECLIPSE中的几乎每件东西都为插件,对于为ECLIPSE提供更多的插件,且给使用者因为它不但允许程序员构建环境而且开发与ECLIPSE环境天衣无的缝集成的工具集合。第3章系统的概要设计概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。1、引言(1)编写目的软件开发过程中的概要设计,主要解决实现该游戏需求的程序模块设计问题。包括如何把该游戏划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及模块构造的设计等。(2)设计背景说明这次毕业设计主要围绕连连看展开,设计缘由一方面是由于毕业设计的需要,然后本人喜欢使用JAVA语言进行编程,这次毕业设计需要用到其中的GUI编程来实现游戏的设计,另一方面由于今年将举行世界杯,也属于个人爱好。编程加体育运动的爱好边组成了这次毕业设计的先行条件。2、总体设计(1)需求规定表31连连看模块和功能项目名称模块功能开始游戏启动游戏暂停游戏使游戏暂时停止于当前状态停止游戏退出界面,停止游戏基于JAVA连连看游戏炸弹对图片随机进行消除(2)运行环境1硬件要求基本无要求,普通计算机即可;2操作系统WINDOWS各个版本均可实行;3程序运行环境ECLIPSE,MYECLIPSE。(3)功能需求与程序的关系本次毕业设计,用如下的矩阵图来说明各项功能,需求的实现,同各块程序的分配关系,在游戏界面可以进行开始游戏和暂停游戏操作;控制按钮控制着游戏的开始和暂停以及结束;炸弹可以对图片进行随机的消除。表32模块分配关系图游戏界面控制图片开始游戏重新开始游戏退出游戏炸弹(4)各个功能按钮的介绍A“开始游戏”按钮此按钮实现新游戏的首次载入;B“重新开始游戏”按钮此按钮用来实现游戏的重新载入;C“炸弹”按钮此按钮用来实现随机图片的消除,以便给用户带来良好的体验;D“退出”按钮此按钮用来实现游戏的关闭;E“游戏规则”按钮此按钮用来查看连连看游戏规则,方便玩家的操作;F“游戏帮助”按钮此按钮用来查看版本信息以及关于作者的一些信息。G“游戏暂停”按钮此按钮用来暂停游戏。(5)基本设计概念和处理流程开始鼠标点击位置的确定判断是否点击在图案方块判断判断是否已选定一个图片判断选定第二个图片判断是否可以消除图片判断消除图片消除选定图片的记录结束是是是选定第一个图片否否否图31处理项目流程图3、接口设计(1)用户接口本次毕业设计连连看游戏采用事件监听器来实现,每次使用鼠标点击功能按钮或者点击图片进行消除都咬用到监听器,每次对提示窗口的移动也会用到时间监听器。(2)外部接口1)用户界面本软件的屏幕格式,按钮格式,输入输出方式都是按照人性化的设计,方便用户执行各种操作。每个按钮按键简单明了,操作简单,互动性强,适用于各类玩家使用。用户通过主界面的按钮进行游戏的控制,同时系统返回一个信息。2硬件接口本软件产品的用户需要通过键盘及鼠标进行操作,进行主界面后点击相应上网按钮,进行规定的键盘操作,然后分别在主界面有相应的动作反应。3)本软件与操作平台无关,能适应与各种操作系统。(3)内部接口内部模块之间的接口,是通过内部函数的调用来完成实现的,在程序设计过程中用设计软件本身所带的调用函数实现。这次毕业设计一共设有5个游戏类文件,每个类之间接口调用设计完好。4、运行设计(1)运行控制程序一旦运行,便可进入可视化操作界面,再此界面可以进行各项操作,类如单击开始游戏,进入游戏界面;点击重新开始按钮,会对图片进行随机排列;点击退出按钮则此次游戏终结。(2)运行时间运行时间为每次游戏开始到结束的时间,为了方便操作将此单独作为一个类,且将时间默认设置为80S,可在后台对此时间进行修改,即延长或者缩短,以此来增加游戏难度,给用户带来良好的体验。5、系统数据结构设计(1)逻辑结构设计要点游戏由一个游戏主界面、一个自定义组件页面和5个游戏类文件组成。自定义组件用来说明游戏主界面页面中的“游戏说明”窗口弹出。5个类文件分别为游戏主类GAME、图片按钮类MYBUTTON、连线类LX、连通算法类UTILS和资源类RES。第4章系统的设计与实现1、游戏的设计在深入学习和了解算法的基础理论部分之后,接下来便是开始致力于编写算法,基础理论知识和真实算法编写是有一定差距的。基础理论知识是了解算法的开端,也是实施建设的基础,实现算法编码不仅要思考如何把理论知识的部分,体现在具体操作过程中,而且要通过各种实现方法来体现,因此在算法编写的过程中,就必须挑选适当的方法体现出来。(1)功能设计功能设计就是按照产品定位的初步要求,在对用户需求及现有产品进行功能调查分析的基础上,对所定位产品应具备的目标功能系统进行概念性构建的创造活动。使用者需要通过用鼠标点击菜单选项目中的“游戏开始”按钮,来启动新的一局游戏。随后系统便会随机加载不同的图片,然后通过设置好的算法对图片进行排列并且标记图片为选定项,方便接下来判断再次选择的图片是否与之前选定的相同。之后记录图片所在的坐标,从而系统可以很快算出选定的图片可以相连并且消除是否能实现。接下来确定所选图片的大小,确定哪张图片被用户点击。当使用者通过鼠标点击并且选择两幅一样的图片时,如果使用者通过鼠标点击两次选择到的图片不相同,此时程序认为使用者没有进行鼠标点(鼠标点击记数变为零),从而完成用户以后的选择工作。如果此时使用者选取的是两张相同的图片,然后程序会对这两张图片进行消除,且使鼠标记数变为零,然后对这两张图片清除且进行标记,让界面里面的图片标注在外部,点击两次选择到的图片不相同,此时程序认为使用者没有进行鼠标点,从而完成用户以后的选择工作。如果此时使用者选取的是两张相同的图片,然后程序会对这两张图片进行消除,且使鼠标记数变为零,然后对这两张图片清除且进行标记,让界面里面之后用户就可以执行下一步的抉择。可以选择重新开始游戏,此时系统会默认重新载入图片,用户可以再次开始另一次消除游戏;也可以选择退出,此时用户关闭游戏框;还可以选择炸弹功能,此时系统会对图片进行随机消除。开始游戏的流程图如图41所示,该程序流程图用来体现游戏开始的流程,也用来直观体现是否可以消除,以及再次开始等等的判断过程。开始程序开始游戏接受用户点击是否提示是否二次点击图片是否相同图片是否可以相连用户消除点击两张图片是否还有图片未消除结束NYYYNYNNN消除两张相同且可消除的图片Y图41开始游戏流程图玩家还可以通过用鼠标点击“炸弹”按钮来执行图片的消除。其方法为用鼠标点击菜单栏中的“炸弹”按钮进行使用,点击后可以随机消除一张图片,此为我此时毕设的特殊之处,不同于以往的点击炸弹可消除一对图片,炸弹数是在代码中有限制的,我将其设置为三颗,每次用数遍点击一次“炸弹”按钮,炸弹功能即可实现,此时炸弹数目就会随着点击次数的增加而自动减少一颗,如果炸弹数目被点击完之后,数目变为零时(用鼠标点击炸弹三次,即使用三次“炸弹”功能对图片进行点击)。此时如果玩家希望再次点击炸弹时,程序会弹出提示框对玩家进行提示此时“炸弹已经使用完毕”。“炸弹”按钮控制流程图如图42所示。此图以流程的方式用来判断炸弹是否用完,以及一些判断,用完之后提示炸弹使用完毕。开始接受使用炸弹是否还有炸弹消除相同且可连接的两张图片结束Y提示用户已无炸弹可用N图42炸弹控制流程图当玩家点击“开始游戏”按钮之后,游戏就会开始,此后程序会在后台记录游戏开始时间,如果在玩家还未将所有的图片消失,此时系统默认的时间走完了,则系统会自动弹出提示框,提醒玩家时间到了,图片未消除完游戏失败。当时间截至前,玩家通过精湛的技艺,将所有的图片都消失完毕(每次对两张进行消除,一直到最后两张被消除),此时系统会提示玩家,游戏已胜利,用鼠标点击“确定”按钮之后,再次判断是否想要重新开始下一场游戏。时间控制流程图如图43所示。此图以流程的方式用来表现游戏时间是否用完,以及是否开始下次游戏,时间走完之后提示时间使用完毕,系统做出判断此时玩家是否进行下次游戏或者直接退出。开始读取设定的时间时间是否已为零提示玩家时间已耗尽结束YN图43时间控制流程图(2)模块设计通过对连连看游戏细致分析,将此次毕业设计设的连连看游戏分为三个大的模块图形界面模块、流程算法模块、菜单控制模块。游戏模块流程图如下图44所示,此图以流程的方式用来显示连连看游戏的三个大的模块,以此来指导毕业设计的顺利进行,为毕业设计提供指引方向。连连看游戏算法模块菜单(控制)模块界面显示模块图44游戏模块图1流程算法模块的设计方案包含(1)处理图片路径的设计;(2)产生图片来源的设计。2图形界面模块的设计包含(1)连连看游戏主界面的设计;(2)连连看游戏时间显示的设计;(3)连连看游戏成功、失败的设计。3菜单控制模块的设计包含(1)开始游戏的设计;(2)重新开始游戏的设计;(3)炸弹功能的设计;(4)退出游戏的设计;(5)游戏规则的设计;(6)游戏关于的设计;(7)游戏背景音乐的设计。菜单模块流程图的设计如下图45所示。此图以流程的方式用来表现菜单模块的各个部分的衔接以及点击某个按钮之后给下一步操作带来的影响,游戏开始和重新开始的相应判断,一些说明按钮的使用情况。开始菜单选项游戏游戏帮助开始游戏重新开始炸弹退出游戏规则游戏关于是否满足三个判断条件中的一种消掉两张图片全部消完炸掉判断的图片Y结束N图45菜单流程图(3)算法设计1对图片路径处理的设计在检查两个图片是否能消掉的之前,系统要让两个图片同时满足以下条件才可,一个是两张图片必须相同而非相似,二是两张图片必须用以下的方式联通,三是我的特殊设计即不加判断,两张图片相同即可进行消除。详细的判断是否可以消除的方法分为以下三种情况在以下的三种情况中,大家可以了解需要经过三次检测才可行,这三次检测情况分别为检测相临,不相邻情况1,不相邻情况2。此时就会产生三种路径。如果这三种路经上面都是空按钮,此时刚好就是三种类型的直线(俩个拐弯点)把两个空按钮连接起来了。(1)相邻。相邻自然不必多说,任何情况下都可消除,这是常识也是事实。(2)不相邻情况1。则先在第一次点击的图片的同行找一个相同的图片。发现之后,检查第二个图片在水平方向到第一次点击的图片,所占据的列是否存在图片;如果没有,则看第一个图片到与它同行,那个图片之间是否存在有图片;如果没有,则再从与第一个图片在同一行,那个为空的图片竖直方向,和第二个图片的同一行看是否存在图片,如果没有,则没有图片可以进行消除了,果在玩家还未将所有的图片消失,此时系统默认的时间走完了,则系统会自动弹出提示框,提醒玩家时间到了,图片未消除完游戏失败。当时间截至前,玩家通过精湛的技艺,将所有的图片都消失完毕(每次对两张进行消除,一直到最后两张被消除),此时系统会提示玩家,游戏已胜利,用鼠标点击“确定”按钮之后,再次判断是否想要重新开始下一场游戏,接下来查看不相邻情况2。(3)不相邻情况2。在第一个图片的同一列找一个空图片,找到之后,查看第二个图片在竖直方向到这个空图片,占据的同一行是否存在图片;如果没有,则继续查看第一个图片到与在它同一列,那个空按钮之间是否还存在别的按钮;如果没有,则再从与第一个图片,在同一列的那个空按钮,水平方向到与第二个图片在同一列是否存在别的按钮;如果没有,路径此时就被打通了,可以进行消除图片了如果在玩家还未将所有的图片消失,此时系统默认的时间走完了,则系统会自动弹出提示框,提醒玩家时间到了,图片未消除完游戏失败。当时间截至前,玩家通过精湛的技艺,将所有的图片都消失完毕(每次对两张进行消除,一直到最后两张被消除),此时系统会提示玩家,游戏已胜利。若以上三种情况都不能实现,则说明这两个图片不可以被消去。算法流程图如图47所示。此流程图用来判断消除情况,什么情况下可以进行消除,什么情况下不可以消除,在不可以消除的时候该怎么办,可以消除的情况下又该怎么办。此流程图翔实的反映了消除过程,是代码完成的指导方向也是算法的核心体现。2图片产生的设计把图片成对地显示于主页面中,并且打乱排列顺序主要用的是JAVA变成语言中的MAP类。在MAP类当中,用一个数组的数字标识的格式来记录,加载的图片是哪种图片的分支,每次进行加载图片时,是对一种图片持续加载两次,用来保证加载图片是成对的。之后用二维数组的随机实现方法,将数组打乱。从而在主页面上排列出看似杂乱无章的排列方式。声明变量是否为同一张图片是否在同一位置是否在同一条横线是否在同一条竖线返回FALSENY是否相等Y返回TRUEY是否直线相连N返回TRUEY是否相等是否直线相连当两图不在一条直线上则以两图在X,Y的延长线上去找两个点,是P1到I,I到J,J到P2都能直线相连返回TRUE返回TRUEYYNN返回FALSENN返回TRUE图46算法流程图(4)类的设计此时毕设在完成连连看游戏的过程中,主要编写了以下五个大类LLKFRAMEJAVA是主界面部分实现了对程序用函数调用,对程序菜单的使用及调用;CHESSBUTTONJAVA是按扭部分定义了按钮位置代表的不同值;MAPUIJAVA游戏主要部分对两次点击的图片进行判断,判断两张图片是不是可连接、是不是相同、判断游戏是否胜利或者是失败、实现炸弹功能消除图片功能;SETTINGSJAVA是数组明确了连连看游戏的各种参数以及属性;ARRAYPOINTJAVA给图片取值部分明确图片的值以及大小;MAPJAVA程序实现算法部分通过此算法来确定两张图片,是不是可以连接连通;MUSICJAVA音乐部分通过此类为连连看毛游戏添加背景音乐,来给玩家带来更好的用户体验。2、游戏的实现(1)关键算法的实现1判断两张图片,是不是在同一条直线上,此处不进行两者值的比较是否相等,而是主要用于对后面俩个拐点情况的判断。A1表示之前被点到的图片,A2代表当前正在被点到的图片,TRUE代表两张图片连通,FALSE代表两张图片不连通。PUBLICBOOLEANONELINEWITHOUTVALUEARRAYPOINTA1,ARRAYPOINTA2IFHORIZONMATCHA1,A2RETURNTRUEELSEIFVERTICALMATCHA1,A2RETURNTRUERETURNFALSE2判断两张图片是否在同一条直线上,其中包含了竖直方向和水平方向这两种情况。PUBLICBOOLEANONELINEARRAYPOINTP1,ARRAYPOINTP2IFA1VALUEA2VALUERETURNFALSEIFONELINEWITHOUTVALUEA1,A2RETURNTRUERETURNFALSE(1)两张图片同时在竖直方向时,后台代码做出的判断。图47两张相同图片在竖直方向PUBLICBOOLEANVERTICALMATCHARRAYPOINTA1,ARRAYPOINTA2IFA1JA2JRETURNFALSEIFA1IA2IARRAYPOINTTEMPNULLTEMPA1A1A2A2TEMP(2)两张图片同时在水平方向时,后台代码做出的判断。图48两张相同图片在水平方向PUBLICBOOLEANHORIZONMATCHARRAYPOINTA1,ARRAYPOINTA2IFA1IA2I/假如行序号不同的话,就不是水平方向的结果RETURNFALSEIFA1JA2JARRAYPOINTTEMPNULLTEMPA1A1A2A2TEMPINTSPACECOUNTA2JA1J/水平方向图片相隔数IFSPACECOUNT1FORINTIP1J1I0COLTEMPNEWARRAYPOINTP1I,COL,MAPP1ICOLIFTEMPVALUE0ELSEBREAK(2)判断消除时拐点在右方向;图413两个拐点且拐点在右方COUNTSETTINGSCOLUMNS2P1JFORINTCOLP1JCOL0ROWTEMPNEWARRAYPOINTROW,P1J,MAPROWP1JIFTEMPVALUE0(4)判断消除时拐点在下方;图415两个拐点且拐点在下方FORINTROWP1I1ROWSETTINGSROWS2ROWTEMPNEWARRAYPOINTROW,P1J,MAPROWP1JIFTEMPVALUE0(2)游戏界面实现通过GUI语言进行编程,对游戏进行设计分析,由此来完成对游戏,整体界面的设计,游戏主界面的实现,关键代码如下PUBLICCLASSLLKFRAMEEXTENDSJFRAMEIMPLEMENTSACTIONLISTENERPRIVATEINTBOMBCOUNTSETTINGSBOMBCOUNT/定义炸弹的数目PRIVATEINTYXTIMESETTINGSYXTIME/定义游戏的时间JFRAMEMAINFRAME/主界面CONTAINERTHISCONTAINERJPANELCENTERPANEL,SOUTHPANEL,NORTHPANEL/界面的布局容器JLABELLABELTIMERTIMERNEWTIMER1000,NEWBUTTONACTIONJMENUBARMENUBAR/菜单条JMENUFILEMENU,HELPMENU/一级菜单JMENUITEMRELOADITEM,STARTITEM,BOMBITEM,EXITITEM,RULEITEM,ABOUTITEM/二级菜单COLORDARKCOLORNEWCOLOR55,77,118COLORLIGHTCOLORNEWCOLOR111,146,212MAPUIMAPUIMUSICMUSICNEWMUSICPUBLICVOIDINIT/初始化界面MUSICPLAYMAINFRAMENEWJFRAME“连连看“图416为此游戏开始后的界面,再次界面可以看到有两个首选按钮以及关闭框,缩小框和放大框,可以在此页面进行相关操作,现截图如下。图416初始界面THISCONTAINERMAINFRAMEGETCONTENTPANETHISCONTAINERSETLAYOUTNEWBORDERLAYOUTLABELNEWJLABELLABELSETBACKGROUNDCOLORREDCENTERPANELNEWJPANELSOUTHPANELNEWJPANELNORTHPANELNEWJPANELFILEMENUNEWJMENU“游戏Y“STARTITEMNEWJMENUITEM“开始游戏“STARTITEMADDACTIONLISTENERTHISRELOADITEMNEWJMENUITEM“重新开始“RELOADITEMADDACTIONLISTENERTHISBOMBITEMNEWJMENUITEM“炸弹“BOMBITEMADD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于修订请假管理制度
- 全员会议纪律管理制度
- 完善公司薪酬管理制度
- 制氧机房安全管理制度
- 医院家具现场管理制度
- 党员活动考勤管理制度
- 儿童作息饮食管理制度
- 公司项目金额管理制度
- 动物防疫疫苗管理制度
- 医药公司薪酬管理制度
- 2025年江苏省镇江市新区中考数学二模试卷
- 前台订机票管理制度
- 地理-美国 课件-2024-2025学年人教版七年级下册地理
- GB/T 30134-2025冷库管理规范
- 2025年安徽省合肥八中高考最后一卷地理试题及答案
- 浪潮新员工培训体系大纲
- 2025年7月浙江省普通高中学业水平考试历史仿真模拟卷01(含答案)
- 安徽省合肥市45中学2025届七年级数学第二学期期末监测模拟试题含解析
- 中学生成就目标导向下的学习满意度影响机制探讨
- 预防医学知识试题及答案汇编
- 法人变更交接协议书
评论
0/150
提交评论