《基于JAVA的拼图游戏.doc》由会员分享,可在线阅读,更多相关《基于JAVA的拼图游戏.doc(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、太原科技大学华科学院毕业设计(论文)基于JAVA的拼图游戏学院(直属系):计算机科学与技术系 时间:2014年5月20 日学 生 姓 名指 导 教 师设计(论文)题目基于JAVA的拼图游戏主要研究内容1.实现程序GUI图形界面; 2.实现游戏开始、重来、退出功能; 3.设计实现游戏主要算法; 4.实现鼠标或键盘事件响应模块; 5.查看原图功能研究方法通过参阅网上已有实例,了解程序主要的算法,翻阅参考文献,了解程序设计的思想和理念,通过本身对程序的理解,对游戏的认识和在指导老师的帮助下来完成。主要技术指标(或研究目标)主要技术:GUI,swing,ImageIcon等。用JPanel,JButt
2、on,JLabel,JFrame等组件实现程序主界面窗口,事件监听来实现鼠标或键盘事件,实现图片的切换和按钮的作用,Imageicon来加载图片。主要参考文献1 唐大仕:Java程序设计M,北方交通大学出版社,2007.05:P56-P622 郑莉:Java语言程序设计M,清华大学出版社,2007.01:P67-P753 朱站立:Java程序设计实用教程M,电子工业出版社,2006.10:P58-P704 耿祥义:java2实用教程M,清华大学出版社,2007.3:P81-P925 朱站立:Java程序设计实用教程M,电子工业出版社,2006.10:P58-P70基于JAVA的拼图游戏摘要 J
3、AVA语言是由美国sun公司开发的一种完全面向对象的程序设计语言,它由c+语言发展而来,但比c+语言简单。JAVA语言具有简单、与平台无关、高效、健壮、安全、多线程等特点,是当前网络编程中的首选语言。本文主要通过JAVA语言来开发一个小游戏,以实现其相关功能。随着社会的发展,计算机已经成为人么日常生活,学习办公中不可缺少的一部分,并在各个领域发挥着重要的作用。在计算机迅猛发展的影响下,计算机游戏也随之兴盛起来。拼图游戏就是其中一中,它适用范围广,老少皆宜。该游戏不仅可锻炼动手能力,观察能力,而且还能培养人与人之间的协作能力。它是一个应用程序,它的游戏规则和win7的拼图游戏是一样的。将一张图片
4、分割成16张小图,将除去左上角的其余15张图片放入一个4*4的网格内,通过鼠标的点击图片来切换空白处对换位置,让其复原成原来的顺序,游戏就完成了。可以选择下一张来切换另一张图片,或者按开局重新开始游戏。关键词:JAVA 2平台标准版,JAVA语言,小应用程序Jigsaw puzzle based on JavaabstractJAVA language is developed by the sun a fully object-oriented programming language, it is developed by c + + language, but simpler than
5、c + + language.The JAVA language has a simple, platform-independent, efficient, robust and security, multithreading, is the preferred language in the current network programming.This paper mainly through the JAVA language to develop a small game, in order to realize its related functions.With the de
6、velopment of the society, the computer has become the people daily life, an indispensable part of learning in the office, and play an important role in all fields.Under the influence of the rapid development of computer, computer games has been thriving.Jigsaw puzzle is among them one, its applicabi
7、lity is wide and for young and old.The game is not only can exercise ability, observation ability, but also can cultivate interpersonal cooperation ability.This puzzle game is based on the J2SE platform development, it is an application, it is the rules of the game and win7 puzzle game is the same.P
8、icture will be divided into 16 images, will remove the upper left corner of the rest of the 15 images in a 4 * 4 mesh, the blank space with the mouse click on the image to switch switch position, make its recovery as the original sequence, the game is finished.Can choose the next to switch the other
9、 picture, or press start to start the game.Keywords: Java 2 Platform, Standard Edition, JAVA language, application.目 录摘 要ABSTRACT第一章 概述11.1 项目开发的背景与国内外研究现状11.2 项目开发的目的与意义11.3 系统开发方法介绍2第二章 项目开发语言及开发环境52.1 JAVA语言52.2 ECLIPSE简介6第三章 可行性分析及总体设计原则83.1 可行性分析所采用的方法和步骤83.2 评价尺度83.3 可行性分析83.3.1 技术可行性83.3.2 经济
10、可行性83.3.3 社会可行性83.4 总体设计原则9第四章 需求分析104.1 OOA方法介绍104.2 功能需求104.3 环境需求104.4 可靠性需求114.5 用户界面需求114.6 软件成本消耗与开发进度需求114.7 条件假定和限制11第五章 系统分析125.1 业务流程分析125.2 总体设计方案125.3 游戏功能分析13第六章 系统设计146.1 系统功能设计146.2 系统重点设计146.2.1 开局载入图片156.2.4 随机排列图片166.2.3 游戏时排列图片186.2.4 换下一张图片186.2.5 判断拼图是否成功196.3 拼图游戏界面的设计与实现20第七章
11、设计小结21参考文献24致谢25附录26IV第一章 概述1.1项目开发的背景与国内外研究现状随着信息技术的飞速发展、蓬勃进步,同时随着国际互连网与相关系统的迅速普及,不同国家、行业被Internet连接在一起,互相通信,共享全世界的计算机资源和信息。如何保证不同格式的资料或信息能够安全、高速、自由的交流、传输就成为一个迫切解决的问题。1996年Sun公司Java语言的正式发表可以说是Internet的一次技术革命,Sun公司的一位营销天才把一门试验性的跨平台语言由象征踏实的Oak(橡树),改名为香气四溢的Java(咖啡)时,可能他没有想到这门语言能有后来的辉煌。事实上,如果现在Sun想为这门语
12、言改名,以准确体现其在计算机行业的地位,似乎Oak更形象。今天,虽然Java语言并非真正意义上的遍地开花,但它已经出现在众多场合和设备中,而且它享有运行稳定、设计精良的美名。它实现了程序的运行不受平台的限制,在网络上不仅可以进行无格式的资料交换,还可以进行程序交换。Java语言具备了其它语言所没有的独特优势,它一出现就马上受到了各界人士的欢迎。Java的出现无疑给计算机行业带来了一股清风,它带来了许多新鲜而有趣的思想和观念。Java Swing组件在游戏的实现上扮演着不可或缺的重要角色,Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用
13、程序可以使用任何可插拔的外观风格。Swing was developed to provide a more sophisticated set of GUI components than the earlier Abstract Window Toolkit .Swing提供了本机的外观和手感 ,模拟多个平台的外观和感觉,同时还支持一个可插拔的外观和手感 ,使应用程序有一个拥有外观和感觉的基础平台。 It has more powerful and flexible components than AWT.它具有比AWT更强大和灵活的组件。In addition to familiar c
14、omponents such as buttons, check box and labels, Swing provides several advanced components such as tabbed panel, scroll panes, trees, tables and lists.除了熟悉的部件,如按钮,复选框和标签,Swing提供了一些先进的零部件,如卡式面板,滚动窗格,树,表,列出,因此Swing深受开发人员青睐。除此之外,他们只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。因此,可以推断Java Swing组件在未来游戏等各个相关
15、领域依旧会保持良好的发展势头,发扬其优势,更好的服务于Java游戏产业。11.2 项目开发的目的与意义 现代科学技术的发展,改变了人类的生活,作为新世纪的大学生,应该站在时代发展的前沿,掌握最先进的现代科学技术知识,以适应社会的发展,应能够独立地完成各种应要面临的任务,成为一名有创新意识的新型人才。目前,很多新的技术领域都涉及到了Java语言。Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java 语言也是学习面向对象编程和网络编程的首选语言。该课题的主要目的是使Java游戏开发者深入理解所学的Java语言,并实践于该游戏设计中,深刻体会以前所学的有关Java 程序设计
16、方面的语言基础、异常处理、事件处理、应用程序以及图形用户界面设计等方面的知识,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构等。学会使用Java系统,其中包括对程序的调试、运行、保存等知识的运用,还包括提高程序开发功能,能运用合理的方法简化Java程序的操作,开发过程中应培养分析问题、解决问题的能力。基于Java组件技术的拼图游戏软件是一款具有娱乐性、益智性、便捷性的游戏软件。此软件可以使用户放松心情,享受于拼图游戏的乐趣之中。该游戏软件可以让用户选择适合自己的主题与难度,根据用户的不同水平,锻炼其图片记忆能力以及拼凑还原能力。游戏结束后亦可让用户清晰了解到自己的游戏
17、状态水平,便于调整自己对这款游戏的新的难度要求。另外要求软件设计精致,画面亲和,人机交互高效快捷,能够给用户带来人性化的服务。软件面向的主流群体集中在年轻人,但也适宜儿童或者老人使用,提供了适宜各类用户群体的图片风格与难度设置。不论是旨在轻松娱乐,还是益智教育的目的,该软件都是一款家庭生活中以及学习生活的必备软件。 设计并实现基于Java组件技术的拼图游戏软件作为自己的毕业课题设计是对学校基础课程、专业课程以及实践课程的一次综合性考查。此外,Java Swing组件在单机游戏平台上的应用一直处于热门,这次的系统全面的实践可以说是一次很好的锻炼,会对以后工作生活带来积极的影响。1.3 系统开发方
18、法介绍目前比较成熟的系统开发方法有:生命周期法、原型法、面向对象法等。生命周期法:把一个信息系统从其提出、分析、设计和使用,直到停止使用的整个生存期视为一个生命周期。整个生命周期划分为五个主要工作阶段:可行性分析阶段、系统分析阶段、系统设计阶段、系统实施阶段和系统运行、维护与评价阶段。通常采用结构化系统分析和系统设计方法,自上而下分析、设计,强调开发过程的整体性和全局性;开发过程在时间上基本按阶段进行,任务明确;结合用户需求进行开发;开发周期长,维护不方便。适用于开发需求较明确固定的信息系统。原型法:是系统开发者在初步了解用户需求的基础上,开发出能实现系统最基本功能的一个原型,再根据用户对原型
19、使用与评价的意见,提出修改方案,修改完善原型,如此反复多次,直到得到用户满意的最终系统为止。开发过程以用户为中心,开发周期短。适用于开发需求不够明确或不断变化的软件。面向对象法:以类,类的继承,聚集等概念描述客观事物以及联系。为系统的开发提供了全新的思路,面向对象方法以对象为中心。其特征主要有模块性,继承性和类比性,动态连接性。面向对象开发方法的开发过程:1.系统调查和需求分析:对系统将要面临的具体管理问题以及用户对系统开发的需求进行调查研究,即先弄清要干什么的问题; 2.分析问题的性质和求解问题:在繁杂的问题域中抽象地识别出对象以及其行为、结构、属性、方法等。一般称之为面向对象的分析,即OO
20、A; 3.整理问题:对分析的结果作进一步的抽象、归类、整理,并最终以范式的形式将它们确定下来。一般称之为面向对象的设计,即OOD;4.程序实现:用面向对象的程序设计语言将上一步整理的范式直接映射(即直接用程序设计语言来取代)为应用软件。一般称之为面向对象的程序,即OOP; 5.识别客观世界中的对象以及行为,分别独立设计出各个对象的实体;分析对象之间的联系和相互所传递的信息,由此构成信息系统的模型;由信息系统模型转换成软件系统的模型,对各个对象进行归并和整理,并确定它们之间的联系;由软件系统模型转换成目标系统。2 面向对象开发方法的应用范围:在大型管理信息系统开发中,若不经自顶向下的整体划分,而
21、是一开始就自底向上地采用OO方法开发系统,会造成系统结构不合理、各部分关系失调等等问题。OO方法和结构化方法在系统开发中相互依存、不可替代。综上所述,由于面向对象开发方法主要针对于各类管理系统的开发,所以该毕业设计中采用面向对象方法与原型法相结合的方法进行系统开发,主要也因为原型法是近几年发展起来的一种开发方法。该方法从一个初始信息要求的集合出发,在发展中逐步完善信息系统,更简单、易学,同时也更适合该系统的开发。使用原型法开发大体有以下几个步骤:1.确定系统需求;2.设计初始原型,包括确定需求以及开发工作模型,例如屏幕格式、功能菜单格式以及对关键数据和功能的说明等;3.对初始原型进行需求迭代,
22、不断进行修正或改进,直至得到一个用户满意的原型,从而终止原型迭代过程;4.原型效果考察,考察用户新加入的需求信息和组成成分的严格说明信息,看其对原型效果的影响,是否影响到原型的有效性,如果导致原型失败,应加以修正和改进;原型法的生命周期提供了一种完整的、灵活的、近于动态的需求定义技术。它综合了所有提出的必要需求,建立原型就近似于预先需求的规格说明。对原型的工作模型可以进行必要的剪裁和组织,以便更接近目标系统。它可以综合用户、领导和原型开发人员的各方需求。3第二章 项目开发语言及开发环境2.1 JAVA语言JAVA是Sun Microsystem公司开发的编程语言,是一个简单,面向对象,分布式,
23、解释性,强壮,安全,与系统无关,可移植,高性能,多线程和动态的语言。下面简单介绍一下JAVA的基本特点。45(1) 简单性JAVA与C+语言非常相近,但Java比C+简单,它抛弃了C+中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。 JAVA实现了自动的垃圾收集,简化了内存管理的工作。(2) 面向对象JAVA提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决
24、方案。(3) 多线程多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。(4) 分布性Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便的访问其他对象。(5) 体系结构中立Java是一种网络语言,为使Java程序能在网络的任何地方运行,Java解释器生成与体系结构无关的字节码结构的文件格式。为了使Java的应用程序能不依赖于具体的系统,Java语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这些包时
25、,可以确保它能运行在各种支持Java的平台上。(6) 安全性用于网络、分布环境下的Java必须要防止病毒的入侵,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。(7) JAVA中输入/输出流概念过滤流DataInputStream 和DataOutputStream 除了分别作为FilterInputStream 和FilterOutputStream的子类外,还分别实现了接口DataInput 和DataOutput。接口DataInput 中定义的方法主要包括从流中读取基本类型的数据
26、、读取一行数据、或者读取指定长度的字节数,如readBoolean()、 readInt()、readLine()、readFully()等。接口DataOutput中定义的方法主要是向流中写入基本类型的数据或者写入一定长度的字节数组,如writeChar()、writeDouble()。 DataInputStream可以从所连接的输入流中读取与机器无关的基本类型数据,用以实现一种独立于具体平台的输入方式;DataOutputStream 可以向所连接的输出流写入基本类型的数据。2.2 Eclipse简介Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只
27、是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。6Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C+和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。Eclipse 最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的Eclipse代
28、码基础,包括Platform、JDT 和PDE。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一个开发源码项目,它其实是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse
29、将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具
30、建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。本次程序中环境为JDK1.6,同时运用了eclipse开发工具。第三章 可行性分析及总体设计原则3.1 可行性分析所采用的方法和步骤通过研究分析拼图游戏所具备的能力及实现的方法来确定主体结构。利用现阶段我所能达到的能力,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。3.2评价尺度由于本软件是一个初级产品,对其要求不是太苛刻,所以能够保证达到拼图游戏的一般功能。3.3 可行性分析为避免开发失误,保证新系统的成功开发和运行,从技术、经济和社会三方面对本系统的可行性进行了分析和研
31、究。3.3.1技术可行性本系统的开发基于Swing技术的拼图游戏开发。Swing可以轻松开发功能丰富的应用程序。现有的技术已较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,利用现有技术条件可以达到该系统的功能目标。本人在学校期间已经掌握Java设计思想和代码编写。同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发的。因此,java拼图游戏具有技术可行性。3.3.2 经济可行性具有信息化的处理设施,并且拥有支持本系统的应用平台。因此无需再投入资金购买其他设施。系统的开发基于本人对程序开发的实践学习而来,无需资金投入,并且软件开发过程投入的成本不高,因此开发经费完全可以
32、接受。游戏开发成功后可以提供娱乐、休闲等。因此,java拼图游戏开发也具有经济可行性。3.3.3社会可行性本系统的社会可行性主要从法律因素、用户使用可行性两方面进行研究。(1)法律因素系统的软件设计是在独立的环境下完成的,无可供抄袭的软件产品。(2)用户使用可行性本系统对用户的要求,除了需要具备在Microsoft Windows平台上使用个人电脑的知识外,并不需要特别的技术能力。在投入使用前,无需对操作系统的人员进行培训。这样既减少投入成本又简化了操作环节。因此,java拼图游戏也具有社会可行性。3.4 总体设计原则本系统为了设计、实现和后期维护的方便,以及系统用户使用的便利,所以必须采取一
33、定的设计原则。其主要设计原则有:简单性:在实现系统的功能的同时,尽量让系统操作简单易懂,这对于一个系统来说是非常重要的。针对性:本系统设计是针对java拼图游戏的需求定向开发设计,所以具有专业突出和很强的针对性。实用性:要求本系统能够满足java拼图游戏的需要,因此具有良好的实用性。一致性:页面整体设计风格以及命名规则的一致性:整体框架和用图用色风格及变量、类名和其他元素的命名规则保持一致。功能一致性:完成同样的功能应该尽量使用同样的元素。 元素风格一致性:界面元素的美观风格、摆放位置在同一个界面和不同界面之间都应该是一致的。变量命名规则的一致性:变量应该用统一的规则进行命名,做到任意变量均能
34、从上下文推断其义。先进性:本系统采用eclipse做为开发工具,使用swing技术开发,软件具有良好的兼容性和系统稳定性。因此本设计具有良好的先进性 。78第四章 需求分析4.1 OOA方法介绍面向对象的分析方法(OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。在用OOA具体地分析一个事物时,大致上遵循如下五个基本步骤: 第一步,确定对象和类。这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处
35、理现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。 第二步,确定结构(structure)。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。 第三步,确定主题(subject)。主题是指事物的总体概貌和总体分析模型。 第四步,确定属性(attribute)。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。 第五步,确定方法(method)。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。对于每个对象和
36、结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。9104.2 功能需求用户对于该拼图游戏的需求主要体现在以下几个功能:1. 实现程序GUI图形界面;2. 实现游戏开始、重来、退出等功能;3. 实现鼠标或键盘事件响应模块的功能;4. 实现游戏主要算法;5. 实现输赢自动判别功能;6. 实现查看原图功能;4.3 环境需求操作系统可以有以下几种:Win XP/Win Vista/Win 7。硬件要求:奔腾四处理器,主频2.0GHz,512M以上内存。4.4 可靠性需求要保证该拼图游戏软件的稳定性,要在完成软件设计
37、后进行软件稳定性测试,检测出该软件发生故障的概率。4.5 用户界面需求利用Java Swing组件对该游戏软件的界面进行设计与实现,实现程序GUI图形界面,做到界面设计简洁大方,时尚新颖,适合各类用户群体使用。4.6 软件成本消耗与开发进度需求 由于该软件只作为毕业设计,用于考察学生对于Java Swing 组件的理解与应用能力,并未涉及软件的市场推广等工作,且开发该游戏的软件不需付费,属于零成本,所以暂不用考虑软件的成本消耗。开发进度严格遵守任务书中的毕业设计(论文)进度计划。4.7 条件假定和限制由于本软件目前是基础版本,未做到尽善尽美。如果用户需要提高版本,本软件需要根据游戏者的要求进行
38、进一步的修改。第五章 系统分析5.1 业务流程分析在进行业务流程分析时,需要按照原有信息流动过程,逐个地调查分析所有环节的处理业务、处理内容、处理顺序和对处理时间的要求,弄清各个环节需要的信息、信息来源、流经去向、处理方法、计算方法、提供信息的时间和信息形态。业务流程分析可以帮助开发者了解该业务处理过程,发现和处理系统调查工作中的错误和疏漏。java拼图游戏的具体的业务流程图,流程如图5.1所示。 图5.1业务流程图5.2 总体设计方案游戏非常的简单,当运行程序后,在登录游戏界面后,设计本程序能够载入默认图片,程序为4*4的16格。在本程序中,对于图片的拼凑、判断图片是否可以移动等都是设计的关
39、键。总体设计方案中主要说明判断拼图是否成功这点的设计。把分好的图片存储到一个image数组中,对于可移动的块其实是按钮,每个按钮上都有一个icon,通过随机把image数组中的图片通过imageIcon的转化后附给一个按钮,并将按钮数组首先附给一个向量,然后用随机数来确定对应向量的值,然后再附给对应数组按钮,同时去除该值。也就是说在附值的时候图片顺序不变,变的而是数组按钮的顺序。对于图片的是否拼图成功的提示,主要是在每个按钮中加个String的属性值,而且对于正确的排序的值与正在排的各个值比较,一旦所有的按钮对应的值与正确的排序一致,则为成功。5.3 游戏功能分析程序运行主窗口显示程序界面,点
40、击“开局”按钮后开始游戏,拼图过程中,可以再次点击“开局”按钮重新随机排列图片重新开始游戏,或者点击“下一张”加载另外一张图片。第六章 系统设计 6.1系统功能设计 运行程序直接进入程序界面,点击“开局”按钮后开始游戏,再次点击可以重新开始游戏,点击“下一张”进入下一张图片。如图6.1所示图6.1 模块流程图6.2系统重点设计这是程序运行后显示出来的界面,包括了原图,已经载入排列好的图片,点击“开局”打乱图片开始游戏,点击“下一张”换图片。一共有5套图片可以选择,如图6.2所示。图6.2 程序运行开始效果这个程序大致跟win7桌面的拼图小游戏功能相同,在这里重要的介绍一下,图片的载入排列,换下
41、一张图片,开始游戏后打乱排列图片的算法和拼图过程中交换图片的算法。6.2.1 开局载入图片用修图软件一共裁剪了5张图片,裁剪成15张小块的图片和另外一张白色的小图,每个图片的原图由“x.jpg”的格式命名,白色的小图用“x00.jpg”的格式命名,裁剪成的15块小图由“xyz.jpg”的格式命名,依次按大小命名图片,x的值的范围为0-4,y和z的取值范围为0-3。如图6.3所示。 图6.3 裁剪图片的编号命名根据图6.4所示,把网格布局管理器设置为一个4*4的网格,用一个二维数组来摆放图片的位置,根据上文的命名规则,y代表行数,z代表列数,通过嵌套for循环来把裁剪好的小图依次放入网格中。最后
42、排列得出图6.2所示的效果。图6.4 网格图示例部分代码:private String order() String exactnessOrder = new String44;for (int row=0; row4; row+) for (int col=0; col4; col+) exactnessOrderrowcol = image/+ num+ row+ col+ .jpg; return exactnessOrder;class StartButtonAction implements ActionListener public void actionPerformed(Act
43、ionEvent e) String stochasticOrder = reorder();int i= 0;for (int row=0; row4; row+) for (int col=0; col4; col+) JButton button = (JButton) centerPanel.getComponent(i+);button.setIcon(new ImageIcon(stochasticOrderrowcol);if(stochasticOrderrowcol.equals(image/+ num+ 00.jpg)emptyButton=button;6.2.2 随机排
44、列图片点击“开局”后, 程序用嵌套for循环把裁剪好的图片依次放入一个二维数组中,再在另外一个嵌套for循环中随机出16个网格中的行数和列数存在一个新的数组中,先确定这个数组是空的,然后把图片依次放入随机出的数组中,到for循环结束就达到了随机排列图片的效果,如图6.5所示。图6.5 随机排列后的效果部分代码:private String reorder() String exactnessOrder= new String44;for (int row=0; row4; row+) for (int col=0; col4; col+) exactnessOrderrowcol = imag
45、e/+ num+ row+ col+ .jpg; String stochasticOrder = new String44;for (int row=0; row4; row+) for (int col=0; col4; col+) while (stochasticOrderrowcol=null) int r = (int) (new Random().nextInt(4);int c = (int) (new Random().nextInt(4);if (exactnessOrderrc != null) stochasticOrderrowcol = exactnessOrderrc;exactnessOrderrc = null;return stochasticOrder;6.2.3 游戏时排列图片交换图片的时候,先确定空白图片和要交换位置图片的数组就是行和列,当空白图片行与图片的行的差的绝对值和空白图片列与图片的列的差的绝对值的和等于1的时候,就说明两张图片是可以交换位置的。比如两图片的位置为3.03.1。|(3-3)|+|(0-1)|=1;这样程序就判断两张图片是可以交换位置的。部分代码:class ImgButtonAction implements Act