收藏 分享(赏)

基于Java的连连看游戏设计与实现.docx

上传人:wo7103235 文档编号:9208197 上传时间:2019-07-29 格式:DOCX 页数:102 大小:1.60MB
下载 相关 举报
基于Java的连连看游戏设计与实现.docx_第1页
第1页 / 共102页
基于Java的连连看游戏设计与实现.docx_第2页
第2页 / 共102页
基于Java的连连看游戏设计与实现.docx_第3页
第3页 / 共102页
基于Java的连连看游戏设计与实现.docx_第4页
第4页 / 共102页
基于Java的连连看游戏设计与实现.docx_第5页
第5页 / 共102页
点击查看更多>>
资源描述

1、1毕业设计(论文)论文题目 基于 Java 的连连看游戏设计与实现Thesis Topic Design and Implementation of Java-Based Link-Game2基于 Java 的连连看游戏设计与实现摘 要连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,直至完全消除所有图案。 这款游 戏操作简单(只需单击鼠标左键操作)、面向人群广泛,在限 时 操作的游戏要求下,吸引玩家自发地锻炼观察能力、判断能力和反应能力,故从推出至今 颇受欢迎。消除 类游戏 如今也有很多类型,但 连连看游戏因其操作简单依旧广受好评, 该游戏不仅能调节精

2、神状态,还能在游戏中锻炼我们的眼力视野和集中力,开发思维 能力的同时培养面对困难时具备攻克困难的信心。此次设计所使用的语言为 Java 语言,开发环境为 JDK Version1.7.0,开发工具为Eclipse。主要应用 Swing 组件, Java 小程序,事件及接口等。本系 统主要是运用 Swing组件和事件处理技术,进行界面的绘制,鼠 标的操作,以及积分的显示和沙漏的计时的显示等功能。关键词:游戏;连连看;二维游戏3Design and Implementation of Java-Based Link-GameAbstractLink-Game is a kind of tile-m

3、atching puzzle games,the core requirement is that within the prescribed period eliminating two selected pictures which clicked on the before and after and had the same pattern until completely eliminating all of the same two.There are numerous reasons why this game is popular since launch as follow.

4、The operation of the game is simple (just need clicking the mouse left key)and facing the crowd is widespread.But also in the limited time,game players have to victory attracts people exercise spontaneously observation ability,judgment ability and the ability to respond to.Now this kind of puzzle ga

5、mes also has a lot of types,but Link-Game because of its simple operation is still popular,not only can the game adjust the mental state,but also exercise our eyesight and concentrated force by enjoying the game.Furthermore,it develops the thinking ability.Meanwhile,it cultivates the confidence to o

6、vercome difficulties when we face the difficulties.This design uses Java language,and its development environment is the Version 1.7.0 JDK on eclipse,the development tool.This system mainly use Swing components,Java applet,event and interface.By using event handling technology and Swing technology r

7、ealizes the GUI,the mouse operation,showing the game credits as well as the function that timing as the hourglass.Keywords: Games; Link-Gamegame; tTwo-dimensional gameGame目录摘 要 1Abstract 2目录 21. 绪论 11.1. 课题背景 .11.2. Java 游戏开发的现 状 11.2.1. Java 日益趋向成熟 .11.2.2. Java 极大的方便了游 戏脚本的使用 .21.2.3. Java 平台无关特性

8、.21.2.4. Java 在手机游戏开 发方面的优势 .21.2.5. Java 在网络方面的良好表 现 .21.2.6. 游戏速度 31.3. 项目开发的目标 .31.4. 项目开发的意义 .31.5. 本文章节安排 .41.6. 本章小结 .42. 开发环境和相关技术简介 52.1. 开发环境 .52.1.1. Eclipse5Java62.1.262.2. 相关技术简介 .72.2.1. Eclipse 的图形界面开发 .82.2.2. Java 技术在游戏开 发中的应用 .82.3. 本章小结 .123. 需求分析 133.1. 可行性分析 .133.1.1. 技术可行性 133.1

9、.2. 经济可行性 133.1.3. 社会可行性 143.1.4. 操作可行性 143.2. 连连看游戏需求描述及规则描述 .143.3. 系统需求分析 .143.3.1. 业务需求 153.3.2. 用户需求 153.3.3. 功能需求 163.3.4. 非功能需求 173.4. 本章小结 .184. 概要设计 194.1. 模块设计 .194.1.1. 连连看系统总体结构 194.1.2. 连连看系统模各模块介绍 194.1.3. 游戏界面模块 204.1.4. 处理模块 204.2. 确定类 .204.3. 游戏素材 .224.3.1. 背景图片 224.3.2. 游戏图片 224.4.

10、 本章小结 .235. 详细设计和实现 245.1. 界面设计 .245.1.1. 界面实现 245.1.2. 倒计时沙漏的设计 265.2. 游戏执行的实现 .285.2.1. 点击图片的实现及其部分代码 295.2.2. 记分、记关数的实现 .305.2.3. 刷新功能的实现 305.2.4. 重新开始游戏功能的实现 325.3. 游戏的连接算法 .325.3.1. 连连看连接方式的类型 325.3.2. 连连看连接方式的分析 335.3.3. 部分核心代码 355.4. 本章小结 .366. 系统测试 376.1. 软件测试目的及意义 .376.1.1. 测试目的 376.1.2. 测试

11、意义 386.2. 测试方法分类 .386.3. 测试步骤 .396.4. 测试用例 .406.5. 测试结果 .456.6. 本章小结 .45结 论 46致 谢 47参考文献 4811. 绪论以互联网产业为代表的中国信息产业蓬勃发展,并已成为国民经济和社会发展的重要组成部分。电子游戏产业 作为电子技术的产物,涉及到电子游戏的开发、市 场营销和销售等方方面面的经济领域,并且很快在全世界的娱乐领域占据主流位置。在社交网络飞速发展的影响下,电子游 戏社交化助力推动电子游戏各个方面的发展,带来的经济效益也愈发庞大。网页游戏 、单机游戏、网络游戏形形色色数量 庞大,涌现出一批批颇具新意的游戏,为疲惫的

12、生活 带来轻松和愉悦, 满足玩家的娱乐休闲要求。1.1. 课选题背景连连看游戏顾名思义就是找出具有关联关系的事物并进行相应处理,经历了从桌面游戏、在 线游戏再到社交游 戏三个过程,形式多种多样。游 戏的核心要求是将两个能用三根以内的直线连接的关联事物(相同事物)消除(或进行其他处理)。一般的连连看小游戏规则和操作都简单明了易上手,但也有很多新版本的连连看游戏加入了各类道具和游戏模式来丰富游戏内容,很好地增强了游戏的娱乐性,也带给玩家长期的挑战性和新鲜感。对于90后大部分玩家来说,一定对网页游戏有很深刻的印象。最早,玩家 们会在电脑课上接触到基于Flash的网页游戏。在 线Flash游戏 大都界

13、面优良,操作 简单,基本靠鼠标点击或者键盘方向键控制即可完成游戏。虽然当时网络游戏发展也很迅猛,但网页游戏仍旧依靠自身特点很快地吸引了一大批玩家。2随着网络更多地服务于社交活动以及更多开放平台的兴起,很多游戏慢慢走向“ 社交化”,就是将游 戏与个人空间结合,在社交网络和平台上主动或被动的通过玩家的“分享”快速地传 播,应运而生出社交游戏。无论是网页游戏还是网络小游戏,都拥有很多玩家受众,经典游戏也有很多,其中不乏有应用Java语言开发 的经典游戏,比如俄 罗斯方 块、超 级泡泡龙、贪吃蛇以及任天堂的超级马里奥等等,兼具游 戏趣味和休闲益智的连连看便是这其中的佼佼者。1.2. Java 游戏开发

14、 的现状提到游戏开发,更多地会提到 C 和 C,这两个 语言在游戏开发中有稳定和高效的表现。作 为主流开发语言的 Java 是否也能在游戏 开发方面展现良好的一面呢?从理论上讲, Java 语言当然能被用来开发游戏,随着 Java 技术不断的更新发展,Jogl、Java3D 等技术的出现, Java 程序在显卡愈发强 大的硬件加速基础上运行效果显著提升,开发出了许多基于 Java 的 2D、3D 游戏和大型的在 线游戏。但 Java 作为开发语言开发游戏仍然被诟病,可以开 发游戏不等同于适合开发游戏,因此,要 讨论 Java 开发游戏的优势和意义。1.2.1. Java 日益趋向成熟Java语

15、言从面世至今已过 20载,它的发展也越来越符合人 们对它的要求和需要。企业级应用的实践在某些方面可以看出该语言在大型软件开发方面颇为适用。当Java语言运行效率不再成为诟病时,相信Java语言跨平台、安全性、高抽象的优势在开发的大型游戏软件方面会有很好的表现。31.2.2. Java 极大的方便了游戏脚本的使用开发的过程往往是一个需要不断改进的过程,过程中会涉及许多方面的问题,游戏开发也不例外。所以改进的 过程是否容易实现对于开发者来说也很重要,而游戏脚本就是为了改进的过程更容易实现。如果将全部文件和数据写入程序,出现问题后要将整个程序重写编译发布,游戏是会不断地修改的,程序会越变越复杂。如果

16、我 们将可重复的数据写入外部文件,游 戏引擎开发完毕通过读取外部文件运行的话,这样,当游戏出现问题时,修改外部文件就能解决问题, 这样做极大地便利了游戏开发过程。 Java本身就可以用来编写游戏脚本,目前也有例如groovy、 beanshell等脚本语言可以无缝交互于Java语言,极大的方便了Java 游戏编程。1.2.3. Java 平台无关特性提起Java语言特性,不得不提它的平台无关性。跨平台一直都是游 戏开发面对的一个实际问题,Java在这方面做的相对于其他语言要好一些。当然,跨平台的特性可以使程序员减少工作量,公司减少投资,然而有些 时候, “write once run ever

17、ywhere”也需要付出一定的代价。在现实中,往往会出现这样的情况: 对于Java applet来说,即使 电脑在硬件上满足程序的要求,可能也无法让程序以同样良好的状态运行在每一台电脑上,除非使用者都是专业人士。利用 Java跨平台特性开发软 件在实现过程中有利也有弊,但Java在解决跨平台问题上比起其他技 术要做的好一些。1.2.4. Java 在手机游戏开发方面的优势4目前来看,游戏功能在手机功能中占据比重越来越大,手机游戏开发也将占据游戏开发市场更大的份额。手机搭 载了各类操作系统也使Java语言因其跨平台的特性在游戏开发中颇受青睐。例如,安卓系统基于Java 语言开发 ,安卓市场在手机

18、市场所占比重很大,所以Java应用还是有一定的需求和不错的前景的。1.2.5. Java 在网络方面的良好表现Java在解决网络方面的问题 上有不错的优势,体现 在两个方面。一方面,基于applet和Java Web Start的游戏很容易更新,不需要用户手动下载新版本。另一方面, Java在网络交互的API相对友好。在大型网络游戏开发中,分布式系统尤为重要, 为了更好的推出硬件产品, Sun公司大力开发了用于网络服务器的Project DarkStar ,DarkStar项目系统基础结构的设计方便了大型多玩家在线游戏的开发,并且有健壮的游戏运作能力,能动态的分配可用的服务器资源, 还拥有性能

19、改善功能,可以说,Project DarkStar的出现提高了Java在开发网络服务器方面的可能性。1.2.6. 游戏速度基于Java的游戏执行效率方面一直 颇受争议,在大型游 戏应用方面的实例不多,更适用于中小型游戏开发。Java开发的游戏执行速度被很多程序 员争议的地方在于Java 程序运行时要启动Java虚拟 机,具体表 现如何,取决于开发项目的大小和软、硬件各方面的表现。与常用来开发游戏 的C 语言相比, Java开发出的游戏速度更慢,但Java开发的成本也相对较低。51.3. 项目开发的目标游戏软件的最直观的评判是它的操作界面,界面的好坏直接影响游戏玩家对这款游戏的接受程度和喜爱程度

20、。 对游戏评判的要求其次是功能齐全与否,功能越丰富,游戏体验的层次越丰富。在游 戏操作简单的基础上丰富游戏内容,会使游戏变得更易普及。针对连连看这款小游戏,本项目的开发目标是:游戏界面整洁美观,实现游戏的可操作性,使游戏操作简单易上手,并且在基础功能实现 后增添一些理解简单、操作 简单的功能用以丰富游戏内容。实现连连看游戏具体要做到以下几点:游戏界面美观大方:通过有些界面要能对游戏操作过程有一定的理解;游戏具有一定的可玩性和吸引力:有一定内容,不局限于普通功能;游戏运行稳定可靠。在设计与实现的过程中,力求对Java语言有新的认识 和理解, 对面向对象的概念和方法熟练应用和实践。在编 写过程中,

21、养成良好的 编 程习惯和良好的编程风格。在 应用所学知识时,巩固理解Java程序设计的基本过程以及 线程、网 络、界面布局等编程技术。旨在培养分析问题的能力和解决问题的能力,着重培养设计分析、设计方法、 设计操作与测试、 观察设计过程和理解 归纳问题的能力。通过对游戏的开发,实现游戏的可操作性及美观性,进一步深化面向对象的程序设计思想,以及熟练运用Swing进行编程的能力,为将来的实际工作打下坚实的基础。1.4. 项目开发的意义6项目开发的意义有两个层面。一方面,在项目开发过程中,开 发人员通过将所学所感融入实际应用中,非常有利于学习和掌握开发过程,有利于进一步掌握Java 面向对象的程序设计

22、语言的基础知识和技能,有利于更直观地感受到面向过程的开发和面向对象的开发之间的不同点。另一方面,项目开发往往能够很好地培养和锻炼个人专业技术能力和个人综合素质能力。本次项目开发,是开发人员和所有先辈们共同努力的结晶。在开 发过程中,查阅资料,解 读国内外优秀学子和老师的智慧结晶, 扩 展了开发人员解决问题的思路和看待问题的眼界,在实践过程中,感受开发的乐趣,可以更好的验证优秀的结论,也可以在前人的基础上提出新看法新角度,并在实践中证明。项目开发的过程大大有利于锻炼开发人员对于目标问题的发现、分析以及解决过程中必不可少的沟通能力、分析能力、理解归纳能力、 设计实现能力以及观察测试能力等各项能力。

23、通过此次毕业设计,能充分的展现项目开发的意义:a) 进一步巩固、加深本科四年专业所学所感,掌握基本理论知识, 结合理论完成实践,提高综合分析问题,解决 问题的能力。b) 开发小型应用系统,掌握运用Java语言编写调试应 用程序, 训练独立开发应用系统,进行数据处理的综合能力。c) 掌握面向对象程序设计的方法。7d) 熟练掌握Java语言的基本 语法,灵活运用各种数据 类型, 对面向对象的程序设计语言的学习有更好的理解。 e) 进一步掌握在集成环境下如何调试程序和修改程序。1.5. 本文章节安排本文共分七章,具体章节安排如下:第一章概述了选题背景、项目目标及意义,介 绍了Java游戏开发现状,指

24、明连连看游戏设计及实现的基本方向。第二章概述了开发环境和相关技术,简述了Java和 Eclipse,重点介绍了Java 在游戏开发中的应用,包括GUI开发、 绘图技术、事件处理机制等。第三章介绍了可行性分析和系统需求分析。首先从技术、经济、社会三方面 进行了可行性分析,然后简述了连连 看游戏的一般游戏规则。最后,从 业务需求、用户需求、功能需求和非功能需求四个方面进行了需求分析。第四章进行了系统概要设计,主要将系统划分出界面模块和处理模块两大模块,确定了游戏风格和素材。第五章介绍了详细设计和实现,包括界面、处理模块和游戏连接算法的设计及实现。第六章进行了系统测试。简述了系统测试相关内容,给出了

25、测试用例和测试结果。第七章进行了全文总结,一方面总结了在完成过程中学习到的内容,另一方面说明了现存问题,展望了进一步工作。81.6. 本章小结本章通过对选题背景、项目目标和意义以及Java 游戏开发现状的介绍,阐述了选题原因,指明了连连看设计和实现的基本方向,描述了项目开发意义。92. 开发环境和相关技术简介Eclipse 是一款优秀的跨平台的自由的集成开发环境(IDE),除了可作为 Java 的集成开发环境外,还可以作为编 写其他语言(如 C和 Ruby)。Java 是一种可以撰写跨越平台的 应用软件的面向对象的 程序设计语言,具有优越的通用性、高效性、安全性和平台移植性,广泛应用于 PC、

26、科学超级计算机、游戏控制台、数据中心、移动电话和互联网等各个领域。本章将围绕 Eclipse 和 Java 介绍项目开发环境和相关技术。2.1. 开发环境软件开发环境(Software Development Environment ,SDE)指在基本硬件和数字软件的基础上, 为支持系统软件和 应用软件的工程化开发和维护而使用的一组软件。系统的软件环境主要由开发系统所用的开发工具和环境集成机制等几部分构成。良好的开发环境对于稳定项目组人员以及提高生产效率都有不可忽视的作用。本次开发环境的具体内容如表2- 1开发环境表所示。表 2-1 开发环境表Table 2-1 Development Env

27、ironment名称 版本 语种操作系统 Windows Windows 8.1 简体中文开发环境 Java JDKVersion1.7.0 简体中文开发工具 Eclipse Eclipse -jee-mars简体中文2.1.1. Eclipse10Eclipse 是一款优秀的跨平台的自由的集成开发环境(IDE),从其功能上来讲是一个基于Java的、开放源代码的可扩展开发平台,就其本身而论,它是一个用于通过插件组件构建开发环境的框架、服 务,并且附 带一个标准的插件集,包括Java开发工具(Java Development Kit)。Eclipse的目标不仅仅为提供一个IDE ,它 还包括了插

28、件开发环境(Plug-in Development Environment,PDE),该环境使得开发 人员可以根据所需添加新插件,使得Eclipse不断扩充越来越强 大。整个Eclipse 体系结构像一个拼图,可添加插件,还可以在已有插件上再添加插件,所以Eclipse的架构基本上是“ 内核核心插件定制插件” 。如图2-1所示,其中,Platform Runtime(平台运行库)是 Eclipse 平台核心,它是一个微内核,负责管理插件注册表和插件,其他所有的功能如 WorkSpace(工作空间)和 WorkBench(工作台)等都是以插件的形式提供。工作空间是负责管理用户资源的插件。工作台是

29、提供用户界面的插件。SWT(Standard Widget Toolkit,标准小窗口工具箱)是Eclipse 平台自己开发的图 形API包,作用和Java的 AWT/Swing GUI API 一样,用来构建图形界面。图 2-1 Eclipse 体系结构图Figure 2- -1 The Architecture Of Eclipse2.1.2. Java112.1.2. Java 是一种可以撰写跨越平台的应用软件的面向对象的程序设计语言。2.1.2.1) 体系Java 根据应用范围可以分 为三个体系:Java SE、JavaEE、Java ME。 Java SE(J2SE,Java2 Pl

30、atform Standard Edition,标准版)主要用于桌面应用软件的编程;JavaEE (J2EE,Java 2 Platform, Enterprise Edition,企业版)主要用于开发分布式的网络程序,例如电子商务网站和 ERP 系统;Java ME(J2ME,Java 2 Platform Micro Edition,微型版)主要用于嵌入式系统开发,例如手机和 PDA 的编程。2)2) 工作原理Java由四方面组成:Java编程语言,即 语法;Java 文件格式,即各种文件夹、文件的后缀;Java 虚拟机(JVM),即处理*.class文件的解释器和 Java应用程序接口(

31、Java API)。当编辑运行一个Java程序时,需要同时涉及这四个组成。图 2-2 工作原理图Figure 2-2 The Figure Of Working Principle12使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在 Java源文件中定义不同的 类,通过调用类(这些类实现了Java API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class 文件中,然后再通过运行与操作系 统平台环境相对应的Java虚拟机来运行class 文件,执行编译产生的字节码,调用class文件中实现的方法来满 足

32、程序的Java API调用。 3) 特性第一,Java 语言是简单的。一方面,语法与 C 语言和 C语言接近,易学 习 易使用。另一方面, Java 丢弃了C中很少使用的、不易理解的特性。 Java 语言中不使用指针使用引用并且提供了自动的垃圾回收机制,这使得程序员不必为内存管理而担忧。第二,Java 是面向对象的语言。Java 提供类、接口和集成等原语,并只支持 类之间的单继承,但支持接口之间的多继承,支持类与接口之间的 实现机制(关键字 implements)。Java 语言还全面支持动态绑定。Java 程序使用类(class)来组织的,另外它还包括一个类的扩展集合,分别组成各种程序包(P

33、ackage ),用户可以在自己的程序中使用。例如,Java 提供产生图形用户接口部件的类(java.awt 包),这里 awt 是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io 包)和支持网络功能的类( 包)。第三,Java 语言是分布式的。13Java 设计成支持在网络上 应用,它是分布式 语言。Java 既支持各种层次的网络连接,又以 Socket 类 支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。第四,Java 语言具有健壮性和安全性。Java 允许扩展编译时检查 潜在类型不匹配问题,不支持

34、 隐式声明,不支持指 针。它的强类型机制、异常处理以及垃圾回收机制保证了 Java 程序的健壮性。并且 Java 还提供了 Null 指针检测、数组边 界检测、异常出口、Byte code 校验等功能。Java 通常被用在网络环境中,具有许多安全特性。第五,Java 语言具有多线程性。Java 的 lang 包提供一个 Thread 类,而线程必须由 Thread 类或其子(孙)类来创建。通常使用以下俩种方法创建线程:其一,使用 Thread(Runnable)的构造将一个实现了Runnable 接口的 对象包装成一个 线程。其二,从 Thread 类派生出子类并重写 run 方法。Java

35、语 言支持多个线程同 时执行,并提供多 线程之 间的同步机制(关键字 synchronized)。第六,Java 语言是可解释的。C,C 语言都是 针对 CPU 芯片进行编译,生成机器代码。而 Java 程序在 Java 平台上被编译为字节码格式的“中间代码” ,可以在有 Java 虚拟机(JVM)的人和系统上被解释执行。第七,Java 语言是动态的。14Java 语言的设计目标之一是适 应于动态变化的环境。 Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能 进行运行 时刻的类型检查。2.2.

36、 相关技术简介本次项目开发基于成熟的 Java 语言,开发环境是 Eclipse。Eclipse 是一个开放源代码的软件开发项目,专注于 为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台,它使用简单,且占用电脑资源也比较少,便于系统的学习 Java。Java 语言具有良好的特性,是一种应用广泛的面向对象的程序设计语言。2.2.1. Eclipse 的图形界面开发Eclipse 拥有漂亮的开发界面,基于标准部件库(Standard Widget Toolkit ,SWT)开发。SWT 是基于 Java 环境下的新类库,它提供了 Java 环境下的图形编程接口, SWT 中的图形库和工

37、具包取代了 AWT 和 Swing。SWT 直接 调用操作系统的图形库,这使得Java 程序的运行速度得到了保证,但是 SWT 的缺点是支持的平台太少。Eclipse 也可以开发基于 Swing 的程序。2.2.2. Java 技术在游戏开发中的应用1) 图形用户界面(Graphical User Interface,GUI)图形用户界面(Graphical User Interface,GUI)与早期命令行界面相比,在视觉上对于用户来说更易于接受。但是,通过在显示屏的特定位置,以各种美 观而不单调的视觉消息提示用户状态的改变, 势必得比简单的消息呈现花上更多的计算能力。15在 Java 语言

38、中,所有的组件都以类的形式给出,AWT 组件放在 java.awt 包中,Swing 组件放在 java.swing 包中。如 图 2-3 所示, java.awt 包中控件类的体系结构。图 2-3 java.awt 包中控件类的体系结构图Figure 2-3 The Architecture Diagram For The Control Class In The java.awt PackageJava.awt 是 Java 内置的包,属于 Java 基本库(JFC )一部分,要使用到该包中的类,必须显式声明 import java.awt.*。Component 是所有 组件的父类,Co

39、mponent 类或之类创建的对象叫组件。Button 、Scrollbar、Canvas、List、Checkbox、TextField、TextArea、Label是包 java.awt 中的类,并且是包中 Component 的子 类。容器也是组件,可以嵌套。上 图中,Applet 不是 java.awt 中的 类。Javax.swing 包包含了一系列 Swing 控件,如果要使用该包中的类,则必须显式声明 import javax.swing.*。Javax.swing 包中类有:Japplet、JFrame、JDialog、Jcomponent。Swing 组件类的设计原理建立在

40、MVC(Model-view- Controller)结构基 础上。 MVC 模式由图 2 -4 所示。16图 2-4 MVC 模式图Figure 2-4 MVC Model抽象窗口工具包(Abstract Window Toolkit,AWT)是 SUN 专门针对 Java GUI 编程提供的最早的也是最初的开发工具包,用来建立和设置 Java 图形用户界面, 这个工具包提供了一套与本地图形界面交互的接口。AWT 使用的技 术是对等设计模式即(AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系)。所以它建立图形用户界面时,是利用操作系 统所提供的图形库, 这 使得不同操作系

41、统上显示不同的界面,因此 AWT 组件集遵循最大公约数原则,即 AWT 只拥有所有平台上都存在的组件的交集。AWT 具有两面性,不被 Sun 推荐使用,只是为了确保向下兼容和支持 Swing。Swing 是在 AWT 的基础上构建的图形界面系统,它最初是为解决 AWT 不能满足用户需求的发展。Swing 提供了 AWT 能提供的所有功能,并且用纯粹的 Java 代码对AWT 的功能进行了扩充。Swing 遵从组件按照某种布局摆放在容器里的原理。当界面完成之后,必须能进行事件 处理, AWT 和 Swing 之 间的事件处理基本是一致的。 Swing组件是用 Java 实现的轻量 级( ligh

42、t- weight)组件,没有本地代码,不依赖操作系统的支持,这是它与 AWT 组件的最大区别。Swing 采用了一种 MVC 的设计范式,即 “模型-视图- 控制”。 Swing 构建界面包括以下几个步骤:导入 Swing 包;选择界面风格;设置17顶层容器;设置按钮和标签;将组件放到容器上;为组件增加边框;处理事件;辅助技术支持。Swing 组 件的层次结构图如图 2-5 所示。图 2-5 Swing 组件的层次结构图Figure 2-5 Hierarchy Diagram For Swing ComponentsSWT 是 Standard Widget Toolkit 的缩写,是 IB

43、M 为尝试 解决 AWT 和 Swing 带来的诸多问题而构建的一个开源的 GUI 编程框架,它提供了比 AWT 更为丰富的组件集。与 AWT 的概念相比,SWT 是一个低级的 GUI 工具包,在构建 SWT 的过程中,构建者从 AWT 和 Swing 实现中学习了很多经验,他们试图构建一个集二者优点于一体而没有二者的缺点的系统。因此 SWT 可以说是 AWT 与 swing 的融合体。2) 绘图技术由Sun公司与 Adobe系统公司合作推出的Java 2D API ,提供了一个功能 强大而且非常灵活的二维图形框架。Java 2D API扩展了java.awt 包中定义的Graphics类和I

44、mage类,提供了高性能的二维图形、 图像和文字,同 时又维持了 对现有AWT 应用的兼容。18Java 2D API是 JFC(Java Fundation Classes)的一员,加 强了传统AWT 的描绘功能。在JDK1.2中已经支援 Java 2D 的使用。透 过Java 2D API ,程序 员可以轻松地描绘出任意的几何图形、运用不同的填色效果、对图形做旋转( rotate)、缩放( scale)、扭曲( shear)等。Applet程序中所采用的AWT 的绘图机制主要涉及三个方法:paint()方法、 update()方法和repaint()方法,update()方法和paint(

45、) 方法都有一个 Graphics类参数。Graphics是画图的关键,它可以支持两种绘图 :一种是基本的绘图,如:画线、矩形、 圆等;另一种是画图像,主要用于动画制作。处理图形则包括两个步骤: 创建Graphics 对象和使用Graphics对象绘制线条和形状、呈现文本或显示与操作图像。Graphics中提供的图形绘制方法有:paint( ):进行绘图的具体操作,必须有程序员重写,系统自动调用;update( ):用于更新图形,先清除背景、前景,再调用paint();因为update()方法和 paint()方法所传递的参数是Graphics类的对象,所以通常用于在动画程序中通过重载进行绘画

46、。repaint( ):用于重绘图形,在组件外形发生变化,即大小改变或位置移动repaint( ) 方法立即被系统自动调用,而 实际上repaint() 方法是自 动调用update() 方法。3) 事件处理机制19除了友好的图形用户界面,流畅的人机交互也是必不可少的要素。在游戏过程中,正确且及时的对用户操作做出响应会给用户带来很好的游戏体验。所以说,游戏开发中的交互与其他技术有着相同的地位,是一个游戏必备的核心。Java 的事件处理机制能够提供良好的交互。Java的事件处理机制中,有以下几个概念:a) 事件Event:一个状态的改 变或者一个活动的发生。 Java中的事件主要有两种:组件类事

47、件、动作类事件。b) 事件源Event Source:产生事件的对象。c) 事件监听器Event Listener:监听事件源的对象,包含事件处理器,并负责检查事件是否发生,若发生就激活事件处理器进行处理的类叫做事件监听器类。其实例就是事件监听器对象。事件监听器类必须实现事件监听器接口或继承事件监听器适配器类。事件源通过调用相应的方法将某个对象作为自己的监听器。在事件发生时,事件源负责给予通知的一种对象。接收到事件通知的监听器进行处理。事件监听器接口和事件监听器适配器类也都包含在java.awt.event和javax.swing.event包中。d) 事件处理器Event Handler:事

48、件处理方法,接收事件并处理事件的方法。事件处理器包含在一个类中,这个类的对象负责检查事件是否发生,若发生就激活事件处理器进行处理。事件处理机制图详见图2-6。当事情发生时,由事件源委托给事件监听器进行处理,继而 执行事件处理代码 ,产生执行效果。20图 2-6 事件机制图Figure 2-6 Event Mechanism Diagram4) 多线程的应用在Java中,线程有两个指代含义:其一是指java.lang.Thread 类的一个实例;其二是指线程的执行。如图2- 7所示, Java线程有五种基本状 态:新建状态(New)、就绪状态(Runnable)、运行状态(Running)、阻塞

49、状 态(Blocked)和死亡状态(Dead)。21图 2-7 线程生命周期图Figure 2-7 The Thread Lifecycle Diagram在Java中,线程的创建常见的有以下三种形式。第一种,继承Thread类,重写 该类的run() 方法。其中,run()方法的方法体也称之为线程执行体,是线程需要完成的任务。当 创建此线程类对 象时会创建一个新的线程,并且使得线程进入新建状态。通 过调用线程对象引用的start()方法,使得该线程进入到就绪状态,此 时此线程并不一定会 马上得以执行, 这取决于 CPU调度时机。第二种,实现Runnable接口,并重写 该接口的run()方法,该run() 方法同样是线程执行体,创 建Runnable实现类的实例,并以此 实例作为 Thread类的target 来创建Thread对象,该Thread对象才是真正的线程对象。第三种,使用Callable和Future接口创建线程。具体是创建Callable 接口的实现类,并实现clall()方法。并使用 FutureTask类来包装Callable实现类的对象,且以此FutureTask对象作为Thread 对象的target

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报