目录引言 (2)一、系统分析 (2)(1)开发平台和技术分析...................................... (2)(2) JAVA语言特点 (3)(3)需求功能分析 (4)(4)数据流程分析 (5)二、系统设计 (5)(1)程序流程设计 (5)(2)程序类设计 (7)三、系统功能实现 (9)(1)通过双缓冲技术实现动画 (9)(2)游戏菜单的绘制 (9)(3)游戏逻辑及屏幕GAMECANVAS类 (10)(4)游戏按键的实现 (14)结论 (17)参考文献: (19)附录 (20)致谢 (22)引言目前,中国的手机用户已经突破4亿大关,同时手机用户还在翻倍增长,远远没有达到饱和的程度,用户数量持续高攀,市场的潜力和巨大的商机已经不言而喻。
4亿的国内手机用户在满足了基本的通信等需求后,还渴望着有更丰富的无线增值业务。
而经过3年多的市场培育,目前手机对手机游戏的认知度和普及率已经显著提高,手机游戏市场的需求无线膨胀,前景相当乐观。
作为无线娱乐产业的先行者,手机游戏势必会在其领域中脱颖而出,占领绝大部分的市场份额。
同彩铃、彩信等其他业务相比,手机游戏的创造性、娱乐性互动性和用户黏性都具有绝对的先天优势,这也是其他无线业务所无法比拟的。
手机游戏产业已成为政府部门、海内外运行上、SP(服务提供商)行业关注的焦点,作为运营商的中国移动将手机游戏作为新业务发展的一个战略性的重点业务。
3G的推出对手机游戏来说,客户端与服务器的数据传输速度会更快,图像视频更加清晰流畅,社区交互更加便捷,画面显示更加夺目,这些要素的大幅度生化使得用户的游戏体验更加丰富。
玩家站在任何地方,都可以对是打开手机,享受手机游戏带来的无线乐趣。
1、系统分析1.1 开发平台和技术分析1.1.1Eclipse简介集成开发环境(Integrated Developing Environment,简称IDE)是一个综合性的工具软件。
目前所有的IDE中,Eclips可以说是有发展前途的产品之一。
Eclips Platform是一个开放的可扩展的IDE。
Eclips Platform提供建造块和构造并运行集成软件开发工具的平台,允许工具建造者独立开发与他人工具无缝结成的工具,无需分辨一个工具功能在那里结束,而另一个工具功能在哪里开始。
Eclips 项目产生的工具和来自其他开放源代码的第三方软件组合而成。
Eclips项目生产的软件一CPL发布,第三方软件有各自的许可访问协议。
1.1.2 Wireless Tool Kit简介WTK(Wireless Tool Kit)是Sun公司针对J2ME推出的用于手机和Palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。
它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。
虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他IDE需集成采用的必备元素。
1.1.3 Java 2 Micro Edition简介J2ME(Java 2 Micro Edition)是Java 2的一个重要组成部分,它与J2SE、J2EE 并称。
根据SUN公司的定义:J2ME是一种高度优化的Java运行环境,是主要针对如蜂窝电话、可视电话、数字机顶盒和汽车导航系统等消费类电子设备的。
J2ME是为了那些使用有限的电力、有限的网络连接及有限图形用户界面能力的设备开发的。
它最初的目标是具备16位或32位处理器、16MHz时钟频率、512KB或更少内存的设备。
J2ME本质上是一个针对小型设备的Java版本,通过裁减某些在小型设备上不许需要的功能,以达到减小Java虚拟机的体积以及相应运行库的体积,目标是为小型设备提供一个可靠,资源占用少的运行平台。
所有的J2ME组件都围绕一个中心,这些被称为configuration(配置)它们中的每一个配置都是用于消费电子和嵌入设备的某一个特定的类别。
1.2 Java语言特点(1) 平台无关性Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。
Java的数据类型与机器无关。
(2) 安全性Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。
它提供了安全管理器,防止程序的非法访问。
(3) 面向对象Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。
(4) 分布式Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。
(5) 健壮性Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。
自己操作内存能减少了内存出错的可能性。
1.3 需求功能分析需求分析过程是整个系统开发最重要的阶段,分析的成功与否,决定着整个系统功能的完善性以及稳定性。
在该阶段需求分析人员需要确定整个产品的功能要求,并且将现实事务抽象成对象并建模。
根据现在手机游戏所需要的各项要求以及具体情况,需要满足以下需求:1. 游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。
一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。
因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。
2. 游戏中为了美观,适用性强,可能需要采用外部文件引入的图片贴图,有关贴图,使得解决静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案。
3. 玩家飞机的运行可以通过键盘响应事件控制,但敌方则因为是自动运行,就需要有一定的智能性;敌人飞机的运行算法也要进行相关的设置,已免游戏过于简单。
玩家飞机还设置了法宝键,按此键可加快子弹速度。
4. 双方的飞机在前进时也需要考虑到是否碰撞到对方飞机,以免重叠运行,造成许多物理上不可能的情况,缺乏真实感。
每一次刷新页面、每前进一步都需要进行相关的碰撞检测。
7. 游戏的地图不可能通过绘图来解决。
否则,不仅难于控制和处理过多的元素,也会因过多的大型图片而不能限制程序的大小,失去手机上程序的原则和Java的优势。
8. Java是基于虚拟机的半解释型编译系统,其执行效率较C++等完全编译后的程序会低很多,程序如果不进行精简和优化,将可能导致运行的不流畅。
除开发过程中对结构上的控制、变量的使用、算法的优化等优化外,还可以使用混淆器(Obfuscator)进行程序打包后的优化。
9. 游戏的结束、开始、动态信息画面作为构成一个程序都是必不可少的重要部分。
良好的用户界面更是吸引用户的硬指标,相关的美术构图和人性化设置也需要有一定的考虑。
1.4 数据流程分析根据系统的功能和数据流程的分析,现将数据流程图显示如下:2、系统设计2.1 程序流程设计MIDlet suite是MIDP应用程序的最小单位,JAM负责将手机内的MIDlet suite以图形化的方式呈现,让用户能够选取欲执行的MIDlet suite,一旦选取了某个MIDlet suite,操作系统就会激活KVM执行里面的MIDlet。
MIDlet及相关的支持类组成了MIDP应用程序的实际内容。
而每个MIDlet都必须继承javax.microedition.midlet.MIDlet这个抽象类。
在MIDP规范中定义了MIDlet的生命周期,以及可以存在的三种状态,包括Paused、Active以及Destroyed,每一个MIDlet在任何时刻只可能处于其中的一个状态。
这三种状态的转换关系如图3-1所示:图2-1 MIDlet的流程MIDlet有三个状态,分别是pause、active和destroyed。
在启动一个MIDlet的时候,应用管理软件会首先创建一个MIDlet实例并使得他处于pause状态,当startApp()方法被调用的时候MIDlet进入active状态,也就是所说的运行状态。
在active状态调用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet进入destroyed或者pause状态。
值得一提的是destroyApp(boolean unconditional)方法,事实上,当destroyApp()方法被调用的时候,AMS通知MIDlet 进入destroyed状态。
在destroyed状态的MIDlet必须释放了所有的资源,并且保存了数据。
如果unconditional为false的时候,MIDlet可以在接到通知后抛出MIDletStateChangeException而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。
本游戏所有界面都是在底层屏幕类Canvas上绘画,首先创建一个离屏画布,将游戏所用地图,玩家飞机以及子弹先绘画在离屏画布上。
程序主要有两个类。
gameStart类继承自MIDlet,gameCanvas类继承自GameCanvas。
游戏经过两个LOGO画面进入到菜单选项,可进行开始游戏,游戏帮助,关于游戏,声音开关,退出游戏等选项。
游戏开始时,主线程一直运行,另外还设置了4个定时器,分别用来控制子弹的生产,子弹的移动,敌机的生产和敌机的移动。
程序使用gameStart类调用sartApp()方法开始游戏,通过Display对象将屏幕显示转给gameCanvas类对象。
2.2.1 MIDlet类用于启动游戏的开始,在MIDlet中通过Display进行用户界面管理,负责与用用程序管理进行交互。
2.2.2 画布Canvas类为了能有程序开发人员控制接口的外观和行为,需要使用大量的初级用户接口类,尤其在游戏程序中,几乎完全依赖的就是Canvas抽象类进行绘图。
从程序开发的观点看,Canvas类可与高级Screen类交互,程序可在需要时在Canvas中掺入高级类的组件。
Canvas提供了键盘事件、指点杆事件(如果设备支持),并定义了允许将键盘按键映射为游戏控制键的函数。
键盘事件由键代码指定,但这样控制游戏会导致缺乏通用性,并不是每个设备的键盘布局都适合游戏的操作。
应当将键代码转换为游戏键的代码,以便硬件开发商能定义他们自己的游戏键布局。
2.2.3 界面设计游戏开始界面如图2-2所示。
游戏进入界面后就会看到“开始游戏”,“游戏帮助”,“关于游戏”,“音乐开关”,“退出游戏”选项。