版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于 java 的拼图游戏学院(直属系):计算机科学与技术系 时间:2014 年 5 月 20 日学 生 姓 名指 导 教 师设计(论文)题目基于 java 的拼图游戏主要研究内容1.实现程序gui图形界面; 2.实现游戏开始、重来、退出功能; 3.设计实现游戏主要算法; 4.实现鼠标或键盘事件响应模块; 5.查看原图功能研究方法通过参阅网上已有实例,了解程序主要的算法,翻阅参考文献,了解程序设计的思想和理念,通过本身对程序的理解,对游戏的认识和在指导老师的帮助下来完成。主要技术指标(或研究目标)主要技术:gui,swing,imageicon 等。用 jpanel,jbutton,jlabe
2、l,jframe 等组件实现程序主界面窗口,事件监听来实现鼠标或键盘事件,实现图片的切换和按钮的作用,imageicon 来加载图片。主要参考文献1 唐大仕:java 程序设计m,北方交通大学出版社,2007.05:p56-p62 2 郑莉:java 语言程序设计m,清华大学出版社,2007.01:p67-p75 3 朱站立:java 程序设计实用教程m,电子工业出版社,2006.10:p58-p70 4 耿祥义:java2 实用教程m,清华大学出版社,2007.3:p81-p92 5 朱站立:java 程序设计实用教程m,电子工业出版社,2006.10:p58-p70i基于 java 的拼图
3、游戏摘要 java 语言是由美国 sun 公司开发的一种完全面向对象 的程序设计语言,它由 c+语言发展而来,但比 c+语言简单。java 语言具有简单、与平台无关、高效、健壮、安全、多线程等特点, 是当前网络编程中的首选语言。本文主要通过 java 语言来开发一个小游戏,以实现其相关功能。随着社会的发展,计算机已经成为人么日常生活,学习办公中不可缺少的一部分,并在各个领域发挥着重要的作用。在计算机迅猛发展的影响下,计算机游戏也随之兴盛起来。拼图游戏就是其中一中,它适用范围广,老少皆宜。该游戏不仅可锻炼动手能力,观察能力,而且还能培养人与人之间的协作能力。它是一个应用程序,它的游戏规则和win
4、7 的拼图游戏是一样的。将一张图片分割成 16 张小图,将除去左上角的其余 15 张图片放入一个 4*4 的网格内,通过鼠标的点击图片来切换空白处对换位置,让其复原成原来的顺序,游戏就完成了。可以选择下一张来切换另一张图片,或者按开局重新开始游戏。关键词:java 2 平台标准版,java 语言,小应用程序iijigsaw puzzle based on javaabstractjava language is developed by the sun a fully object-oriented programming language, it is developed by c + +
5、language, but simpler than 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 re
6、lated functions.with the development 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 am
7、ong them one, its applicability 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 win
8、7 puzzle game is the same.picture 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 t
9、he next to switch the other picture, or press start to start the game.keywords: java 2 platform, standard edition, java language, application.iii目 录摘 要 .abstract .第一章 概述 .11.1 项目开发的背景与国内外研究现状.11.2 项目开发的目的与意义.11.3 系统开发方法介绍.2第二章 项目开发语言及开发环境 .52.1 java 语言 .52.2 eclipse 简介 .6第三章 可行性分析及总体设计原则 .83.1 可行性分析
10、所采用的方法和步骤.83.2 评价尺度.83.3 可行性分析.83.3.1 技术可行性.83.3.2 经济可行性.83.3.3 社会可行性.83.4 总体设计原则.9第四章 需求分析 .104.1 ooa 方法介绍 .104.2 功能需求.104.3 环境需求.104.4 可靠性需求.114.5 用户界面需求.114.6 软件成本消耗与开发进度需求.114.7 条件假定和限制.11第五章 系统分析 .12iv5.1 业务流程分析.125.2 总体设计方案.125.3 游戏功能分析.13第六章 系统设计 .146.1 系统功能设计.146.2 系统重点设计.146.2.1 开局载入图片.156.
11、2.4 随机排列图片.166.2.3 游戏时排列图片.186.2.4 换下一张图片.186.2.5 判断拼图是否成功.196.3 拼图游戏界面的设计与实现.20第七章 设计小结 .21参考文献 .24致谢 .25附录 .26- 1 -第一章 概述1.1 项目开发的背景与国内外研究现状随着信息技术的飞速发展、蓬勃进步,同时随着国际互连网与相关系统的迅速普及,不同国家、行业被 internet 连接在一起,互相通信,共享全世界的计算机资源和信息。如何保证不同格式的资料或信息能够安全、高速、自由的交流、传输就成为一个迫切解决的问题。 1996 年 sun 公司 java 语言的正式发表可以说是 in
12、ternet的一次技术革命, sun 公司的一位 营销天才 把一门试验性的 跨平台语言由象征踏实的 oak(橡树) ,改名为 香气四溢的 java(咖啡)时,可能他没有想到这门语言能有后来的辉煌。事实上,如果现在sun 想为这门语言改名,以准确体现其在 计算机行业的地位,似乎 oak 更形象。今天,虽然 java 语言并非真正意义上的遍地开花,但它已经出现在众多场合和设备中,而且它享有运行稳定、设计精良的美名。它实现了程序的运行不受平台的限制,在网络上不仅可以进行无格式的资料交换,还可以进行程序交换。 java 语言具备了其它语言所没有的独特优势,它一出现就马上受到了各界人士的欢迎。 java
13、 的出现无疑给计算机行业带来了一股清风,它带来了许多新鲜而有趣的思想和观念。java swing 组件在游戏的实现上扮演着不可或缺的重要角色,swing 是一个用于开发 java 应用程序用户界面的开发工具包。它以抽象窗口工具包(awt)为基础使跨平台应用程序可以使用任何可插拔的外观风格。swing 提供了本机的 外观和手感 ,模拟多个平台的外观和感觉,同时还支持一个可插拔的外观和手感 ,使应用程序有一个拥有外观和感觉的基础平台。 它具有比 awt 更强大和灵活的组件。 除了熟悉的部件,如按钮,复选框和标签, swing 提供了一些先进的零部件,如卡式面板,滚动窗格,树,表,列出,因此swin
14、g 深受开发人员青睐。除此之外,他们只用很少的代码就可以利用swing 丰富、灵活的功能和模块化组件来创建优雅的用户界面。因此,可以推断 java swing 组件在未来游戏等各个相关领域依旧会保持良好的发展势头,发扬其优势,更好的服务于java 游戏产业。11.2 项目开发的目的与意义 现代科学技术的发展,改变了人类的生活,作为新世纪的大学生,应该站在时代发展的前沿,掌握最先进的现代科学技术知识,以适应社会的发展,应能够独立地完- 2 -成各种应要面临的任务,成为一名有创新意识的新型人才。目前,很多新的技术领域都涉及到了java 语言。java 语言是面向对象编程,并涉及到网络、多线程等重要
15、的基础知识,因此java 语言也是学习面向对象编程和网络编程的首选语言。该课题的主要目的是使java 游戏开发者深入理解所学的java 语言,并实践于该游戏设计中,深刻体会以前所学的有关java 程序设计方面的语言基础、异常处理、事件处理、应用程序以及图形用户界面设计等方面的知识,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构等。学会使用 java 系统,其中包括对程序的调试、运行、保存等知识的运用,还包括提高程序开发功能,能运用合理的方法简化java 程序的操作 ,开发过程中应培养分析问题、解决问题的能力。基于 java 组件技术的拼图游戏软件是一款具有娱乐性、益智
16、性、便捷性的游戏软件。此软件可以使用户放松心情,享受于拼图游戏的乐趣之中。该游戏软件可以让用户选择适合自己的主题与难度,根据用户的不同水平,锻炼其图片记忆能力以及拼凑还原能力。游戏结束后亦可让用户清晰了解到自己的游戏状态水平,便于调整自己对这款游戏的新的难度要求。另外要求软件设计精致,画面亲和,人机交互高效快捷,能够给用户带来人性化的服务。软件面向的主流群体集中在年轻人,但也适宜儿童或者老人使用,提供了适宜各类用户群体的图片风格与难度设置。不论是旨在轻松娱乐,还是益智教育的目的,该软件都是一款家庭生活中以及学习生活的必备软件。 设计并实现基于 java 组件技术的拼图游戏软件作为自己的毕业课题
17、设计是对学校基础课程、专业课程以及实践课程的一次综合性考查。此外,java swing 组件在单机游戏平台上的应用一直处于热门,这次的系统全面的实践可以说是一次很好的锻炼,会对以后工作生活带来积极的影响。1.3 系统开发方法介绍目前比较成熟的系统开发方法有:生命周期法、原型法、面向对象法等。生命周期法:把一个信息系统从其提出、分析、设计和使用,直到停止使用的整个生存期视为一个生命周期。整个生命周期划分为五个主要工作阶段:可行性分析阶段、系统分析阶段、系统设计阶段、系统实施阶段和系统运行、维护与评价阶段。通常采用结构化系统分析和系统设计方法,自上而下分析、设计,强调开发过程的整体性和全局性;开发
18、过程在时间上基本按阶段进行,任务明确;结合用户需求进行开发;开发周期长,维护不方便。适用于开发需求较明确固定的信息系统。- 3 -原型法:是系统开发者在初步了解用户需求的基础上,开发出能实现系统最基本功能的一个原型,再根据用户对原型使用与评价的意见,提出修改方案,修改完善原型,如此反复多次,直到得到用户满意的最终系统为止。开发过程以用户为中心,开发周期短。适用于开发需求不够明确或不断变化的软件。面向对象法:以类,类的继承,聚集等概念描述客观事物以及联系。为系统的开发提供了全新的思路,面向对象方法以对象为中心。其特征主要有模块性,继承性和类比性,动态连接性。面向对象开发方法的开发过程 :1.系统
19、调查和需求分析:对系统将要面临的具体管理问题以及用户对系统开发的需求进行调查研究,即先弄清要干什么的问题; 2.分析问题的性质和求解问题:在繁杂的问题域中抽象地识别出对象以及其行为、结构、属性、方法等。一般称之为面向对象的分析,即ooa; 3.整理问题:对分析的结果作进一步的抽象、归类、整理,并最终以范式的形式将它们确定下来。一般称之为面向对象的设计,即ood;4.程序实现:用面向对象的程序设计语言将上一步整理的范式直接映射(即直接用程序设计语言来取代)为应用软件。一般称之为面向对象的程序,即oop; 5.识别客观世界中的对象以及行为,分别独立设计出各个对象的实体;分析对象之间的联系和相互所传
20、递的信息,由此构成信息系统的模型;由信息系统模型转换成软件系统的模型,对各个对象进行归并和整理,并确定它们之间的联系;由软件系统模型转换成目标系统。2 面向对象开发方法的应用范围 :在大型管理信息系统开发中,若不经自顶向下的整体划分,而是一开始就自底向上地采用 oo 方法开发系统,会造成系统结构不合理、各部分关系失调等等问题。oo 方法和结构化方法在系统开发中相互依存、不可替代。综上所述,由于面向对象开发方法主要针对于各类管理系统的开发,所以该毕业设计中采用面向对象方法与原型法相结合的方法进行系统开发,主要也因为原型法是近几年发展起来的一种开发方法。该方法从一个初始信息要求的集合出发,在发展中
21、逐步完善信息系统,更简单、易学,同时也更适合该系统的开发。使用原型法开发大体有以下几个步骤:1.确定系统需求;- 4 -2.设计初始原型,包括确定需求以及开发工作模型,例如屏幕格式、功能菜单格式以及对关键数据和功能的说明等;3.对初始原型进行需求迭代,不断进行修正或改进,直至得到一个用户满意的原型,从而终止原型迭代过程;4.原型效果考察,考察用户新加入的需求信息和组成成分的严格说明信息,看其对原型效果的影响,是否影响到原型的有效性,如果导致原型失败,应加以修正和改进;原型法的生命周期提供了一种完整的、灵活的、近于动态的需求定义技术。它综合了所有提出的必要需求,建立原型就近似于预先需求的规格说明
22、。对原型的工作模型可以进行必要的剪裁和组织,以便更接近目标系统。它可以综合用户、领导和原型开发人员的各方需求。3- 5 -第二章 项目开发语言及开发环境2.1 java 语言java 是 sun microsystem 公司开发的编程语言,是一个简单,面向对象,分布式,解释性,强壮,安全,与系统无关,可移植,高性能,多线程和动态的语言。下面简单介绍一下 java 的基本特点。45(1) 简单性java 与 c+语言非常相近,但 java 比 c+简单,它抛弃了 c+中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。 java 实现了自动的垃圾收
23、集,简化了内存管理的工作。(2) 面向对象java 提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。(3) 多线程多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。(4) 分布性java 是面向网络的语言。通过它提供的类库可以处理 tcp/ip 协议,用户可以通过 url
24、地址在网络上很方便的访问其他对象。(5) 体系结构中立java 是一种网络语言,为使 java 程序能在网络的任何地方运行,java 解释器生成与体系结构无关的字节码结构的文件格式。为了使 java 的应用程序能不依赖于具体的系统,java 语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运行在各种支持 java 的平台上。(6) 安全性用于网络、分布环境下的 java 必须要防止病毒的入侵,java 不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段- 6 -访问对象的私有成员,同时也避免了指针操作中容易产生的错误
25、。(7) java 中输入/输出流概念过滤流 datainputstream 和 dataoutputstream 除了分别作为filterinputstream 和 filteroutputstream 的子类外,还分别实现了接口datainput 和 dataoutput。接口 datainput 中定义的方法主要包括从流中读取基本类型的数据、读取一行数据、或者读取指定长度的字节数,如 readboolean()、 readint()、readline()、readfully()等。接口 dataoutput 中定义的方法主要是向流中写入基本类型的数据或者写入一定长度的字节数组,如 wri
26、techar()、writedouble()。 datainputstream 可以从所连接的输入流中读取与机器无关的基本类型数据,用以实现一种独立于具体平台的输入方式;dataoutputstream 可以向所连接的输出流写入基本类型的数据。2.2 eclipse 简介eclipse 是一个开放源代码的、基于 java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,eclipse 附带了一个标准的插件集,包括 java 开发工具(java development tools,jdt) 。6eclipse 是著名的跨平台的自由集成开发环境(i
27、de) 。最初主要用来 java 语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如 c+和 python 的开发工具。eclipse 的本身只是一个框架平台,但是众多插件的支持使得 eclipse 拥有其他功能相对固定的 ide 软件很难具有的灵活性。eclipse 最初由 oti 和 ibm 两家公司的 ide 产品开发组创建,起始于 1999 年 4 月。ibm 提供了最初的 eclipse 代码基础,包括 platform、jdt 和 pde。目前由 ibm 牵头,围绕着 eclipse 项目已经发展成为了一个庞大的 eclipse 联盟,有 150 多家软件公司参与到 ecl
28、ipse 项目中,其中包括 borland、rational software、red hat 及 sybase 等。eclipse 是一个开发源码项目,它其实是 visual age for java 的替代品,其界面跟先前的 visual age for java 差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括 oracle 在内的许多大公司也纷纷加入了该项目,并宣称 eclipse 将来能成为可进行任何语言开发的 ide集大成者,使用者只需下载各种语言的插件即可。eclipse 是一个开放源代码的软件开发项目,专注于为高
29、度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由 eclipse 项目、eclipse 工具项目和- 7 -eclipse 技术项目三个项目组成,具体包括四个部分组成eclipse platform、jdt、cdt 和 pde。jdt 支持 java 开发、cdt 支持 c 开发、pde 用来支持插件开发,eclipse platform 则是一个开放的可扩展 ide,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。eclipse platform 允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪
30、里开始。本次程序中环境为 jdk1.6,同时运用了 eclipse 开发工具。- 8 -第三章 可行性分析及总体设计原则3.1 可行性分析所采用的方法和步骤通过研究分析拼图游戏所具备的能力及实现的方法来确定主体结构。利用现阶段我所能达到的能力,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。3.2 评价尺度由于本软件是一个初级产品,对其要求不是太苛刻,所以能够保证达到拼图游戏的一般功能。3.3 可行性分析为避免开发失误,保证新系统的成功开发和运行,从技术、经济和社会三方面对本系统的可行性进行了分析和研究。3.3.1 技术可行性本系统的开发基于 swing 技术的拼图游戏开发。
31、swing 可以轻松开发功能丰富的应用程序。现有的技术已较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,利用现有技术条件可以达到该系统的功能目标。本人在学校期间已经掌握 java 设计思想和代码编写。同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发的。因此,java 拼图游戏具有技术可行性。3.3.2 经济可行性具有信息化的处理设施,并且拥有支持本系统的应用平台。因此无需再投入资金购买其他设施。系统的开发基于本人对程序开发的实践学习而来,无需资金投入,并且软件开发过程投入的成本不高,因此开发经费完全可以接受。游戏开发成功后可以提供娱乐、休闲等。因此,java 拼图
32、游戏开发也具有经济可行性。3.3.3 社会可行性本系统的社会可行性主要从法律因素、用户使用可行性两方面进行研究。- 9 -(1)法律因素系统的软件设计是在独立的环境下完成的,无可供抄袭的软件产品。(2)用户使用可行性本系统对用户的要求,除了需要具备在 microsoft windows 平台上使用个人电脑的知识外,并不需要特别的技术能力。在投入使用前,无需对操作系统的人员进行培训。这样既减少投入成本又简化了操作环节。因此,java 拼图游戏也具有社会可行性。3.4 总体设计原则本系统为了设计、实现和后期维护的方便,以及系统用户使用的便利,所以必须采取一定的设计原则。其主要设计原则有:简单性:在
33、实现系统的功能的同时,尽量让系统操作简单易懂,这对于一个系统来说是非常重要的。针对性:本系统设计是针对 java 拼图游戏的需求定向开发设计,所以具有专业突出和很强的针对性。实用性:要求本系统能够满足 java 拼图游戏的需要,因此具有良好的实用性。一致性:页面整体设计风格以及命名规则的一致性:整体框架和用图用色风格及变量、类名和其他元素的命名规则保持一致。功能一致性:完成同样的功能应该尽量使用同样的元素。 元素风格一致性:界面元素的美观风格、摆放位置在同一个界面和不同界面之间都应该是一致的。变量命名规则的一致性:变量应该用统一的规则进行命名,做到任意变量均能从上下文推断其义。先进性:本系统采
34、用 eclipse 做为开发工具,使用 swing 技术开发,软件具有良好的兼容性和系统稳定性。因此本设计具有良好的先进性 。78- 10 -第四章 需求分析4.1 ooa 方法介绍面向对象的分析方法(ooa) ,是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。ooa 与结构化分析有较大的区别。ooa 所强调的是在系统调查资料的基础上,针对 oo 方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。在用 ooa 具体地分析一个事物时,大致上遵循如下五个基本步骤: 第一步,确定对象和类。这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和
35、处理现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。 第二步,确定结构(structure) 。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。 第三步,确定主题(subject) 。主题是指事物的总体概貌和总体分析模型。 第四步,确定属性(attribute) 。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。 第五步,确定方法(method) 。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。对于
36、每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出) ,而有些则是显示的。9104.2 功能需求用户对于该拼图游戏的需求主要体现在以下几个功能:1. 实现程序 gui 图形界面;2. 实现游戏开始、重来、退出等功能;3. 实现鼠标或键盘事件响应模块的功能;4. 实现游戏主要算法;5. 实现输赢自动判别功能;- 11 -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、高版本,本软件需要根据游戏者的要求进行进一步的修改。- 12 -第五章 系统分析5.1 业务流程分析在进行业务流程分析时,需要按照原有信息流动过程,逐个地调查分析所有环节的处理业务、处理内容、处理顺序和对处理时间的要求,弄清各个环节需要的信息、信息来源、流经去向、处理方法、计算方法、提供信息的时间和信息形态。业务流程分析可以帮助开发者了解该业务处理过程,发现和处理系统调查工作中的错误和疏漏。java 拼图游戏的具体的业务流程图,流程如图 5.1 所示。 图 5.1 业务流程图5.2 总体设计方案游戏非常的简单,当运行程序后,在登录游戏界面后,设计本程序能够载入默认图片,程序为 4*4 的 16
39、 格。在本程序中,对于图片的拼凑、判断图片是否可以移动等都是设计的关键。总体设计方案中主要说明判断拼图是否成功这点的设计。把分好的图片存储到一个 image 数组中,对于可移动的块其实是按钮,每个按- 13 -钮上都有一个 icon,通过随机把 image 数组中的图片通过 imageicon 的转化后附给一个按钮,并将按钮数组首先附给一个向量,然后用随机数来确定对应向量的值,然后再附给对应数组按钮,同时去除该值。也就是说在附值的时候图片顺序不变,变的而是数组按钮的顺序。对于图片的是否拼图成功的提示,主要是在每个按钮中加个string 的属性值,而且对于正确的排序的值与正在排的各个值比较,一旦
40、所有的按钮对应的值与正确的排序一致,则为成功。5.3 游戏功能分析程序运行主窗口显示程序界面,点击“开局”按钮后开始游戏,拼图过程中,可以再次点击“开局”按钮重新随机排列图片重新开始游戏,或者点击“下一张”加载另外一张图片。- 14 -第六章 系统设计 6.1 系统功能设计 运行程序直接进入程序界面,点击“开局”按钮后开始游戏,再次点击可以重新开始游戏,点击“下一张”进入下一张图片。如图 6.1 所示图 6.1 模块流程图6.2 系统重点设计这是程序运行后显示出来的界面,包括了原图,已经载入排列好的图片,点击“开局”打乱图片开始游戏,点击“下一张”换图片。一共有 5 套图片可以选择,如图 6.
41、2所示。- 15 -图 6.2 程序运行开始效果这个程序大致跟 win7 桌面的拼图小游戏功能相同,在这里重要的介绍一下,图片的载入排列,换下一张图片,开始游戏后打乱排列图片的算法和拼图过程中交换图片的算法。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
42、所示,把网格布局管理器设置为一个 4*4 的网格,用一个二维数组来摆放图片的位置,根据上文的命名规则,y 代表行数,z 代表列数,通过嵌套 for 循环来把裁剪好的小图依次放入网格中。最后排列得出图 6.2 所示的效果。- 16 -图 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;
43、return exactnessorder;class startbuttonaction implements actionlistener public void actionperformed(actionevent 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(
44、stochasticorderrowcol);if(stochasticorderrowcol.equals(image/+ num+ 00.jpg)emptybutton=button;- 17 -6.2.2 随机排列图片点击“开局”后, 程序用嵌套 for 循环把裁剪好的图片依次放入一个二维数组中,再在另外一个嵌套 for 循环中随机出 16 个网格中的行数和列数存在一个新的数组中,先确定这个数组是空的,然后把图片依次放入随机出的数组中,到 for 循环结束就达到了随机排列图片的效果,如图 6.5 所示。图 6.5 随机排列后的效果部分代码:private string reorder()
45、 string exactnessorder= new string44;for (int row=0; row4; row+) for (int col=0; col4; col+) exactnessorderrowcol = image/+ 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(
46、).nextint(4);- 18 -int c = (int) (new random().nextint(4);if (exactnessorderrc != null) stochasticorderrowcol = exactnessorderrc;exactnessorderrc = null;return stochasticorder;6.2.3 游戏时排列图片交换图片的时候,先确定空白图片和要交换位置图片的数组就是行和列,当空白图片行与图片的行的差的绝对值和空白图片列与图片的列的差的绝对值的和等于 1 的时候,就说明两张图片是可以交换位置的。比如两图片的位置为3.03.1。|(
47、3-3)|+|(0-1)|=1;这样程序就判断两张图片是可以交换位置的。部分代码:class imgbuttonaction implements actionlistener public void actionperformed(actionevent e) string emptyname= emptybutton.getname();char emptyrow = emptyname.charat(0);char emptycol = emptyname.charat(1);jbutton clickbutton = (jbutton) e.getsource();string cli
48、ckname = clickbutton.getname();char clickrow = clickname.charat(0);char clickcol = clickname.charat(1);if (math.abs(clickrow - emptyrow) + math.abs(clickcol - emptycol) = 1) emptybutton.seticon(clickbutton.geticon();clickbutton.seticon(new imageicon(image/+ 00.jpg);emptybutton = clickbutton;- 19 -6.
49、2.4 换下一张图片 当点击“下一张”按钮的时候,如果 num=5,因为一共有 5 张图,所以 num=0,否则 num 自加,然后按照上文开始游戏的方法再一次添加新的图片。部分代码:class nextbuttonaction implements actionlistener public void actionperformed(actionevent e) if (num=5) num=0; else +num;modellabel.seticon(new imageicon(image/+num+.jpg);string exactnessorder = order();int i=
50、 0;for (int row=0; row4; row+) for (int col=0; col4; col+) jbutton button = (jbutton) centerpanel.getcomponent(i+);button.seticon(new imageicon(exactnessorderrowcol);if(exactnessorderrowcol.equals(image/+ num+ 00.jpg)emptybutton=button;6.2.5 判断拼图是否成功判断拼图是否成功是拼图游戏的关键环节。算法中,如果stochasticorder 集合中指定的 st
51、ochasticorder 的的边界等于 exactnessorder 集合中指定位置的边界(exactnessorder 集合就是按从左到右,从上到下按顺序排列的空间位置) ,直至- 20 -tk=9 时,即 stochasticorder 数组里的 stochasticorder 的边框与 exactnessorder 数组中的位置完全重合时,拼图成功。部分代码:public boolean issuccess( )int tk=0;for(int r=0;r4;r+)for(int c=0;c4;c+)if(stochasticorderrc.getbounds().equals(exa
52、ctnessorderrc)tk+; if(tk=16)return true;return false;6.3 拼图游戏界面的设计与实现如图 6.6 所示,界面很简单,标题栏是“拼图游戏” ,整体分成上下两大块,上半块分成左右两块,左边是原始图片,右边又分成上下块,上半块是按钮“下一张” ,下半块是按钮“开局” 。整体的下半块是拼图界面。- 21 -图 6.6 拼图主界面部分代码:settitle(拼图游戏);setbounds(100, 100, 370, 525);setdefaultcloseoperation(jframe.exit_on_close);/创建面板对象,并增加边框、布
53、局final jpanel toppanel = new jpanel();toppanel.setborder(newtitledborder(null, titledborder.default_justification,titledborder.default_position, null, null);toppanel.setlayout(new borderlayout();getcontentpane().add(toppanel, borderlayout.north);/创建标签放原图modellabel = new jlabel();modellabel.seticon(n
54、ew imageicon(image/+ num+ .jpg);toppanel.add(modellabel, borderlayout.west);/在右侧加个面板,添加两个按钮jpanel eastpanel = new jpanel();toppanel.add(eastpanel,borderlayout.center);eastpanel.setlayout(new borderlayout();jbutton nextbutton = new jbutton();nextbutton.settext(下一张);nextbutton.addactionlistener(new ne
55、xtbuttonaction();eastpanel.add(nextbutton,borderlayout.north);final jbutton startbutton = new jbutton();startbutton.settext(开局);startbutton.addactionlistener(new startbuttonaction();eastpanel.add(startbutton, borderlayout.center);/初始化中心面板,设置边框,添加按钮centerpanel = new jpanel();- 22 -centerpanel.setbord
56、er(new titledborder(null, , titledborder.default_justification,titledborder.default_position, null, null);centerpanel.setlayout(new gridlayout(4, 0);getcontentpane().add(centerpanel, borderlayout.center);第七章 设计小结相信在大学期间,很多同学都参与过或者是编写过拼图游戏软件的程序,那么这次作为毕业设计,要想更加出色的完成这个课题,并且具有独特之处,就是我编写程序之前首先要考虑到的问题。但是,
57、对于拼图游戏而言,寻找游戏的创新突破口也有一定的难度。除了对于游戏功能方面的创新,还在制作拼图游戏的选材方面寻求突破,也就是对游戏界面的设计多花心思,多下功夫。尽力去满足更多用户群体的需求,争取满足不同用户的喜好。在做毕业设计以前,我对 java 游戏开发只是停留在理论知识的水平上,是“纸上谈兵 ” ,缺乏实际的软件开发经验。这次通过做毕业设计,我完成了拼图游戏的软件开发任务。在整个开发过程中也遇到了很多问题,如载入图片的处理,随机排列图片,图片移动等。对其设计体会总结如下:1. 为了熟悉拼图游戏的相关运作和功能设计,我从网上下载了各种拼图游戏,了解并研究各自的功能设计,总结出哪些是好的功能设
58、计,哪些是不必要的设计。对尝试过的拼图游戏进行总结,将各自的优点融入我的设计之中。2. 完成了从 “小而全” ,到“全而精”的转变。设计过程中 ,经常会遇到困难 ,我学会通过反复思考和测试,找出自己的错误并加以改正,再进行下一个步骤。这个程序就是在这样反复的发现错误、改正错误中完成的。完成游戏雏形之后,再进行逐步的完善。3. 这是一个不断学习新鲜事物的过程,从设计初的不懂到最后能够顺利完成,我体会到在实践中学习的重要性,这对于将来我走上工作岗位具有重要意义,相信这也是布置此项毕业设计的初衷。- 23 -经过三个月的不断努力 ,毕业设计内容已经完成了。回顾这个设计过程,我学到了许多书本上没有学到
59、的知识。通过这次自己制作软件,丰富了自己的实践技能 ,扩展了相关知识 ,使我受益匪浅。同时,也感受到了软件开发的不易。由于我对软件开发还只是一个新手,了解的不多,这其中一定还有很多的不足,也许有些模块未能做得尽如人意。但可以肯定的是,通过此次毕业设计,我确实收获了许多意想不到的东西,不光是编程语言,也包括对于软件设计的重新认识以及对于软件开发人员工作的理解。总的来说,我认为此次毕业设计还是比较成功的,这也是我大学四年来最具成就感的软件开发程序设计。对于今后 java swing 组件开发游戏的前景,相信绝大多数人给出的答案都是肯定的。的确, java swing 组件给单机游戏市场带来了一股力
60、量,在游戏市场所作出的贡献、对软件开发人员带来的便利,毋庸置疑。相信十年甚至几十年,单机游戏市场还会随着 java swing 组件的这股力量继续稳步发展。也许若干年后,基于java swing 组件的开发技术又能创造更辉煌的历史,也许那时候,游戏的界面会变得更加的生动、更加的逼真,能够给游戏玩家带来更高端的游戏体验。- 24 -参考文献1 廖弘智,黄宗仁.java 轻松上手m,北京:机械工业出版社,2008:522 朱站立.java 程序设计实用教程m,电子工业出版社,2006.10: 58-703 肖旻.java 程序设计教程m,北京:中国电力出版社,2003:754 李斌.java 语言
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024老劳动合同范本
- 2024新技术开发保密责任合同书版B版
- 2025年度公共场所消防安全管理合同细则3篇
- 2025年度数控车床采购合同(含刀具智能检测技术)4篇
- 2025年度特殊人群客运服务合同书-无障碍出行服务合作协议4篇
- 2025年度智慧医疗平台建设出资担保协议书4篇
- 2025年企业食堂承包及员工健康餐饮服务协议4篇
- 2024销售人员提成奖金分配劳动合同3篇
- 2024苹果期货交易与风险管理合同3篇
- 2025年度抖音平台虚拟商品交易安全保障协议3篇
- 第二章 运营管理战略
- 《三本白皮书》全文内容及应知应会知识点
- 专题14 思想方法专题:线段与角计算中的思想方法压轴题四种模型全攻略(解析版)
- 医院外来器械及植入物管理制度(4篇)
- 图像识别领域自适应技术-洞察分析
- 港口与港口工程概论
- 《念珠菌感染的治疗》课件
- 个体户店铺租赁合同
- 门店装修设计手册
- 考研计算机学科专业基础(408)研究生考试试卷与参考答案(2025年)
- 新概念英语第二册考评试卷含答案(第49-56课)
评论
0/150
提交评论