



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、( 此文档为 word 格式,下载后您可任意编辑修改!)贵州电子信息职业技术学院计算机科学系毕业设计论文题目:Java专业:计算机应用技术姓名:指导老师:彭 伟,胡登权二一一年月日1目录第 1章 JAVA的简介 . .3第 2章 JAVA中的类 . .4第三章 Java与 CC+的差异 .5第四章 J2ME技术概览 I .64.1 J2ME 的概念 .64.2 J2ME 的简介 .64.3手机游戏的发展.74.3.1面前国内手机游戏的发展情况 . .74.3.2面前国际手机游戏的发展情况 . .7第五章游戏的需求设计分析 .85.1 MIDP 中的游戏 API .85.2游戏类构成 .95.2
2、.1 Boxer类的实现 . .95.2.2 GameCanvas类的功能及特点 .95.2.3Sprite类的功能及特点 0 .95.3游戏角色的处理 9 .95.4游戏中的事件处理 .105.4.1 key Pressed方法 .105.4.2 key Released方法 .11第六章 第二种游戏(飞机大战)的设计方案.126.1项目简介.126.2项目模块.126.3技术实现.136.4项目演示.136.5飞机大战的所需素材 .146.6飞机大战的设计代码展示 .156.7飞机大战的截面图组 .182第 7 章 感 想19第八章致谢和参考文献21第一章 JAVA 简介它最初被命名为Oa
3、k,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun 放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了 Oak在计算机网络上的广阔应用前景, 于是改造了 Oak,以“Java”的名称正式发布。JAVAJava 编程语言的风格十分接近 C、C+ 语言。 Java 是一个纯的面向对象的程序设计语言,它继承了 C+ 语言面向对象技术的核心, Java 舍弃了 C +语言中容易引起错误的指针(以引用取代) 、运算符重载( operator overloading )、多重继承
4、(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中, Java 又引入了泛型编程( Generic Programming)、类型安全的枚举、不定长参数和自动装拆箱等语言特性。Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码 (bytecode) ,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 但在发布后,
5、 Java 的执行速度有了大幅提升。与传统程序不同, Sun 公司在推出 Java 之际就将其作为一种开放的技术。 全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。Sun 公司对 Java 编程语言的解释是: Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。Java 平台是基于 Java 语言的平台。这样的平台目前非常流行,因此微软公司推出了与之竞争
6、的 .NET 平台以及模仿 Java 的 C# 语言。3名字起源。(内容来自老师的讲解和相关课本的摘要)第二章JAVA 中相关类1,final 类:为防止他人从你的类上派生新类,此类是不可扩展的。动态调用比静态调用花费的时间要长。2,多态类:在 java 中,对象变量是多态的。而 java 中不支持多重继承。3,抽象类:规定一个或多个抽象方法的类本身必须定义为 abstract 。例: public abstract string getDescripitionJava 中的每一个类都是从Object 类扩展而来的。object类中的 equal 和 toString 方法。equal 用于测
7、试一个对象是否同另一个对象相等。toString 返回一个代表该对象的字符串,几乎每一个类都会重载该方法,以便返回当前状态的正确表示。(toString 方法是一个很重要的方法)通用编程:任何类类型的所有值都可以同object 类型的变量来代替。封装:就是把数据和行为结合起在一个包中)并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instance field)。重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载。编译器必须挑选出调用哪个方法。数组列表: ArrayList 动态数组列表,是一个类库,定义在java.util 包中,可自动调节数组的大小。4,clas
8、s类和 object 类中的 getclass 方法返回class类型的一个实例, 程序启动时包含在 main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类。第三章 Java 与 CC+的差异4熟悉 C 语言和 C+ 语言的读者一定想搞清楚这个问题,实际上 ,Java 确实是从 C 语言和 C+语言继承了许多成份,甚至可以将Java 看成是类C 语言发展和衍生的产物。比如 Java 语言的变量声明 ,操作符形式 ,参数传递, 流程控制等方面和 C 语言 ,C+ 语言完全相同 .尽管如此, Java 和 C 语言 ,C+ 语言又有许多差别,主要表现在如下几个方面:
9、(1) Java 中对内存的分配是动态的 ,它采用面向对象的机制, 采用运算符 new 为每个对象分配内存空间 ,而且,实际内存还会随程序运行情况而改变。程序运行中,每个,Java 系统自动对内存进行扫描 ,对长期不用的空间作为”垃圾 ”进行收集,使得系统资源得到更充分地利用.按照这种机制 ,程序员不必关注内存管理问题,这使Java 程序的编写变得简单明了,并且避免了了由于内存管理方面的差错而导致系统出问题。而C 语言通过malloc()和 free() 这两个库函数来分别实现分配内在和释放内存空间的,C+ 语言中则通过运算符new 和 delete 来分配和释放内存.在 C 和 C+这种机制
10、中 ,程序员必须非常仔细地处理内存的使用问题。一方面, 如果对己释放的内存再作释放或者对未曾分配的内存作释放,都会造成死机;而另一方面, 如果对长期不用的或不再使用的内存不释放 ,则会浪费系统资源,甚至因此造成资源枯竭.(2) Java 不在所有类之外定义全局变量 ,而是在某个类中定义一种公用静态的变量来完成全局变量的功能。(3) Java 不用 goto 语句 ,而是用 try-catch-finally 异常处理语句来代替goto 语句处理出错的功能 .(4) Java 不支持头文件, 而 C 和 C+ 语言中都用头文件来定义类的原型 ,全局变量, 库函数等 , 这种采用头文件的结构使得系
11、统的运行维护相当繁杂。(5) Java 不支持宏定义, 而是使用关键字 final 来定义常量 ,在 C+ 中则采用宏定义来实现常量定义,这不利于程序的可读性 .(6) Java 对每种数据类型都分配固定长度。比如,在 Java 中, int 类型总是32 位的 ,而在 C 和C+ 中,对于不同的平台,同一个数据类型分配不同的字节数,同样是int 类型 ,在 PC 机中为二字节即 16 位,而在 VAX-11 中 ,则为 32 位 .这使得 C 语言造成不可移植性,而 Java 则具有跨平台性(平台无关性 ).(7) 类型转换不同。在C 和 C+ 中 ,可通过指针进行任意的类型转换,常常带来不
12、安全性,而在 Java 中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换.(8) 结构和联合的处理。 在 C 和 C+ 中,结构和联合的所有成员均为公有 ,这就带来了安全性问题,而在 Java 中根本就不包含结构和联合 ,所有的内容都封装在类里面 .(9) Java 不再使用指针。指针是 C 和 C+ 中最灵活, 也最容易产生错误的数据类型.由指针所进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型转换后,可以访问一个 C+ 中的私有成员 ,从而破坏安全性。而 Java 对指针进行完全地控制,程序员不能直接进行任何指针操作 .(10) 避免平台依
13、赖。Java 语言编写的类库可以在其它平台的Java 应用程序中使用,而不像C+语言必须依赖于Windows 平台。5第四章J2ME 技术概览4.1J2ME的概念: J2ME 的全称是Java2 Micro Edition( J2ME) Java2 技术微型版,与J2SE、 J2EE 一样都是有美国SUN微系统公司提出的JAVA技术规范。4.2 J2ME简介: J2ME是为了能够开发运行在小型设备、独立设备、互联移动设备、嵌入式设备上的 JAVA应用程序而被提出的。J2ME是建立在一个由概要描述、配置、JAVA虚拟机和操作系统等部分组成的标准架构之上的,这些内容共同组成了完整的J2ME 实时运
14、行环境。它的技术核心是由一个JAVA虚拟机( JVM )及一套适合运行在上述设备环境上的API 接口构成。 J2ME在 1999年的 JavaOne 开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算设备的开发人员,这些开发人员需要在他们的产品中整合跨平台的能力。无线设备和小型计算设备的消费者期望这些设备能够有较高的性能。他们希望小型计算设备有快速的响应时间,与同种设备相兼容,拥有功能完备的应用程序。消费者希望桌面计算机和笔记本电脑上的软件和功能同样能够运行在移动电话和个人数字助理上。为了满足他们的需求,开发人员必须重新考虑他们设计计算机系统的方式。开发人员需要利用商业计算机上现有的
15、前端和后端软件的计算能力,并将这些能力传递到微型、移动和无线的计算设备上。 J2ME能够以最小的修改来实现这种传递,如果应用程序的设计是可伸缩的,应用程序就可以适应小型计算设备上有限的资源。J2ME为在小型电子设备上创建性能卓越的网络应用提供了一套完整的解决方案,能很好的解决软件跨平台的兼容性和安全性的问题。J2ME架构的模块化设计使应用程序可以灵活适应小型计算设备的限制。 J2ME 架构没有替代小型计算设备的操作系统。相反,J2ME 架构由位于原生操作系统之上的多层软件组成,这些软件共同称为“连接有限设备配置”( Connected Limited DeviceConfiguration,
16、CLDC)。安装在操作系统之上的CLDC形成了小型计算设备的运行时环境。J2ME 架构由 3 个软件层组成:第一层是包括在内的配置层,这个层次直接与原生操作系统进行6交互。配置层还处理profile 和 JVM 之间的交互。第二层是profile 层,由小型计算设备的应用程序编程接口(API )的最小集合组成。第三层是Mobile Information Device Profile( MIDP)层。MIDP 层由用户网络连接、 永久存储和用户界面的java API 组成。它还能够访问CLDC 库和 MIDP库。 4.3手机游戏的发展,手机是现在人们生活中必不可少的通讯工具之一,有着其重要的作
17、用,现在的人们越来越认识到它的重要性。作为手机中的一部分手机游戏,也发挥着它特有作用。可以说,手机游戏发展到今天已经越来越为人们所熟知,也越来越受到人们的喜爱。但是应该看到,国内手机游戏的发展还是刚刚起步,与欧美日韩等先进国家还有着一定的差距,但是这种差距正在一步一步的缩小。4.3.1 目前国内手机游戏的发展情况,随着技术对游戏经验的促进,游戏市场持续增长。商业IT革命为我们节省了时间和金钱,从而提高了我们的工作水平,我们因此花费更多的时间和金钱在游戏上,来改善生活的整体质量。甚至在当今困难的经济时代,游戏仍保持快速增长,它仍然是盈利行业的组成部分。 Java 开发者应该注意到这里蕴藏着的巨大
18、的商机。手机游戏市场的确有很大的市场发展空间,前景看好,但是在中国游戏市场中马上占据主流地位是不大可能的,那应该还需要至少一年的“磨合期” 。 中国大众还不大熟悉手机游戏这一新鲜事物,在消费心理和习惯上需要引导和培养,尤其是在电脑网络游戏大行中国的时期。这也是一个消费对象需要被确定的问题。什么样的人会为手机游戏而消费呢?而这直接关系到这一新兴产业的存活。只有有了消费需求,才能带动整个手机游戏产业链的循环。在发展不见明朗的萌芽期,手机游戏营运方式、费用结算方式也是需要一段摸索时间的。内容提供商、电信运营商、手机终端生产商之间利益的协调还需要实践地调整。而这都是目前中国手机游戏界内无法做到的事情。
19、手机游戏肯定会有大发展,但是,目前不适合非理智地冒进。4.3.2 目前国际手机游戏的发展情况,在国际上日本、韩国在这方面处于领先地位。日本在手机游戏领域占据了绝对的领导地位。1999 年,包括北美在内的很多国家和地区对手机游戏还一无所知, 日本就已拥有超过 30 万的手机游戏用户, 占全球手机游戏用户的70以上。 2001年初,当短信游戏在全球逐步发展之时,日本NTTDoCoMo 已经推出了近 500 款 i mode 游戏。 2004年 4 月,日本计算机娱乐协会(CESA )发表的统计报告显示, 2003 年日本国内利用手机上网玩游戏的用户数达 897 万人。7第五章游戏设计的需求分析5.
20、1, MIDP 中的游戏 API: MIDP 是专门为互联受限设备配置设计的,它为移动设备提供了一套API 集合, MIDP 包含用户界面类、持久存储功能与网络功能。早在MIDP1.0 版本时,是没有单独的游戏API 的,在 MIDP2.0 后增加了一个新的专门的游戏软件包,顾名思义,此包中定义了游戏开发的各种类型。这个软件包是一个专门为在移动信息设备上开发游戏应用而设计的,所以又叫作游戏 API。10 它里面的成员类有以下几个: GameCanvas、Layer 、LayerManager、Sprite 、TiledLayer。GameCanvas是提供基本的游戏界面; Layer 是一个用
21、来表示游戏中的可视元素的抽象类;LayerManager 管理一系列的Layer ; Sprite是一个基本的可视元素,它本身包含了许多操作, 比如将一个图片切分成若干画面帧(RowFrame),再对这些画面帧编排出一个动画序列(Frame Sequence); TiledLayer是一个可以被许多图片填充的类似于表格的可视元素。10 本论文在设计游戏过程中涉及到其中的 GameCanvas类和 Sprite 类。5.2 游戏类构成:在游戏中,主要的一些类构成有Pocket Boxing 、Boxer 、Enemy、GameCanvas。其中 Pocket Boxing 类继承了 MIDlet
22、 类,用来进行 MIDlet 的 Live Cycle控制; Boxer 存储了玩家的拳击手的信息,进行拳击手的描绘;Enemy存储电脑控制的拳击手的信息, 进行拳击手的描绘, 它继承了 Boxer 类;GameCanvas继承了 Canvas8类,进行画面的描绘与操作。各类都是用与类名称相同的文件名来存储的。9Boxer 类的实现: Boxer 类是用来存储玩家拳击手状态的信息,再以次为根据进行描绘。 Boxer 类由于与用来表现对手的 Enemy 类大致上是相同的,所以要以继承了 Enemy 类为前提来实现。在 Boxer 类的 Constructor 当中,会进行拳击手图像的获取。这里要
23、准备拳击手的身体、上段防御的手腕、下段防御的手腕、上段拳击的手腕、下段拳击的手腕等五种图像。通过身体图像四种类图像的配合,就可以描绘出生动拳击手动态。GameCanvas类的功能及特点: GameCanvas类是软件包中的 Cavas 类的一个子类,它可以为游戏提供基本的显示功能; GameCanvas 类是提供了游戏的中心属性, 如游戏键当前状态的能力、 双缓存绘图等; GameCanvas 类是一个专门的为每一个 GameCanvas实例填充初始化纯白像素的缓存器; 通过调用 Graphics 对象可以改变缓存器中的内容。Sprite 类的功能及特点: Sprite 类是一个能显示几个绘图
24、帧(frame)中的其中一帧的基本动态层;这些帧大小相同并且由一个单独的图片(image)对象提供;Sprite 类可以使许多帧连续的运动,可以使一个定制的序列以任何方式被放置;另外还可以提供转化于检测方法。下面是Sprite 代码样例: 15.3游戏角色的处理:这里的游戏角色拳击手的初始化是以将拳击手设为后退,并将生命值设为默认值为主要目的。拳击手在挥出拳之后, 将会在等待一段时间后恢复原本的防御状态。为了要进行这个等待处理,使用到了Tick 计数。当现在的状态为上下拳击时,就会开始Tick 计数,当数到4 以上的状态时就会回到原来的防御位置。这样一来就可以表现出拳击手出拳头后再回到原来防御
25、状态的样子。不过,在后退时挥出拳击的情况中, 这里不能马上回到后退状态。要在挥出拳击后回到后退状态时,就得通过玩家自己的操作来进行了。5.4游戏中的事件处理:事件可以分为低层事件(low-level10event)与高层事件(( “keyPressed ” +( (char) keyCode ) ); else , 当按下手机的操作键盘上的按键时,就会触发这 key 事件,系统并会自动调用 keyPressed ()方法,并且系统将捕获到的键码传递给该方法,在上面的那段代码中方法判断了所按的按键值是否大于0,如果大于0 输出所按的手机键盘上的实际值,否则执行其他的操作任务。4方法:可以说方法k
26、ey Released ()与上面提到的keyPressed ()方法是对应的。它是用来处理手机操作键盘上的按键被释放的事件,这个方法也同样没有与之对应的显示的听众,这些听众也是由系统根据实际对象提供的。下面是一个样例代码:public voidkeyReleased(int keyCode) if (keyCode >0 ) 输出当前被释放键的键码“keyReleased ” +( (char) keyCode) ); else , 当释放手机操作键盘上被按下的按键时,则会触发这个key 事件,系统并会自动交由keyReleased()方法来处理该事件,同样的上面的这段11代码中,该方
27、法判断了所按的按键值是否大于0,如果大于 0 则输出所释放的手机键盘上的被按下的按键的实际键值,否则执行其他的操作任务。4上面说的是在开发手机游戏过程中遇到的两种低层事件的方法keyPressed 方法和 keyReleased 方法,下面就具体介绍 “Pocket Boxing ”手机游戏的开发过程。第六章第二种游戏(飞机大战)的设计方案6.1 项目简介; W,A,S.D 键分别来控制上、左、下、右四个方向,方便闪躲敌机子弹和进攻敌机 , 用 J 键来射击子弹攻打敌机。6.2项目模块12游戏模块sos主程序我军用的子弹背景、按键监听、机重绘敌机飞军我6.3技术实现13背景移动与闪烁消除,使用
28、双缓冲技术使用矩形重叠判断方法intersects实现背景的移动与多敌对角色实现重绘 使用 ArrayList 使用线程技术 集合实现敌对角色随机出现使用计时器和随机数6.4项目演示游戏控制方法我军飞机1. 按 Enter 键背景音乐一响变开始玩游戏2. 使用 w、a、s 、d键分别控制主角上左下右四个方向移动躲闪敌机角色敌机3. 使用 J键对敌机进行射击146.5 飞机大战所需的素材1 背景图2 敌军飞机3 我军飞机4 敌军飞机5 我军飞机发射子弹6 开始截面图7 另一个背景图8 敌军 BOS 机(当我军把敌机消灭到一定数量时候敌机BOS 机出现)9 我军子弹击中敌机时候的爆炸图6.6 飞机
29、大战设计的源代码展示package Games;15public class GameStart<zidan> extends Frame 得到窗体工具类Toolkit tool = Toolkit.getDefaultToolkit();public int w_width = 700;窗体的宽度public int w_ zd = null;定义一个boss类的对象: bsboss bs = new boss(this);public void showWindow() this.setTitle(" 飞机大战 ");this.setSize(w_width
30、, w_(kuandu, gaodu);this.setResizable(false);添加关闭窗体的监听addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent arg0) System.exit(0););添加键盘的监听,用于控制飞机飞行addKeyListener(new KeyAdapter() 在按下某一个键的时候触发public void keyPressed(KeyEvent e) 调用飞机按下键盘修改状态的方法fj.moveFeiji(e);从新在窗体上画图repaint(););t
31、his.setVisible(true);启动线程,实现窗体从画MyThread my = new MyThread();启动线程my.start();音乐的路径String path = "musicjonas brotherssorry-jonas brothers.mp3" InputStream is = this.getClass().getClassLoader().getResourceAsStream(path);事例化音乐类try AdvancedPlayer ap = new AdvancedPlayer(is);ap.play(); catch (Ja
32、vaLayerException e1) TODO 自动生成 catch 块16e1.printStackTrace();* 通过双缓冲解决闪屏的效果Graphics g 表示窗体的画笔*Overridepublic void update(Graphics g) 如果缓冲图片是空的,就创建一个缓冲图片if ( -Time) 编译器技术的发展越来越接近于 C+。 Java 语言是多线程的。在 Java 语言中,线程是一种特殊的对象, 它必须由 Thread 类或其子(孙)类来创建。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络管理员职业素养及试题及答案
- 供应链管理中的风险考题及答案
- 在实践中加深对知识的理解2025年计算机二级VB考试试题及答案
- 行政管理考试防范的知识盲点:试题及答案
- 关于网络管理员考试的新探讨及试题答案
- 2025玉米买卖合同
- 弘扬学生团结互助的精神计划
- 行政法理论创新的路径选择试题及答案
- 代码抽象与接口设计试题及答案
- 2025年软件设计师复习全账本及试题及答案
- 2025年中考历史总复习《中国历史》七年级上册全册重点知识复习梳理(全册)
- 足疗店装修施工合同协议
- 装饰布展项目合同协议
- 《骨膜下注射技术》课件
- 建筑垃圾清运服务方案投标文件(技术方案)
- 2025-2030中国前列腺癌筛查行业市场发展趋势与前景展望战略研究报告
- 社保知识视频课件
- T型梁的装焊船体加工与装配课件
- 顶级广告设计公司方案汇报
- 《中华人民共和国公务员法概述》课件
- 2025年北京市房山区九年级初三一模数学试卷(含答案)
评论
0/150
提交评论