IPSE Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。
虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。
Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。
由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于 Java 开发工具。
尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。
Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
2.4 关于 Wireless Tool Kit WTKWireless Tool Kit是 Sun 公司针对 J2ME 推出的用于手机和 Palm 等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。
它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。
虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他 IDE 需集成采用的必备元素。
2.5 Java Appication Manager 手机中负责调配程序运行资源的管理后台是 Java Application Manager。
它所使用的传输媒体可以是红外线、网络、以及其他可用来传输的媒体。
Java Application Manager会从网络上下载代表该 Application Suite 的 JAR 档,接着在手机上安装此 MIDlet Suite,然后在手机开始执行该应用程序。
2.6 本章小结:第二章介绍了 Java 语言的特点、本程序的开发环境及其相关工具的原理和使用。
3 程序结构、思想和相关技术3.1 本程序需要解决的主要技术问题 1. 游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。
一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。
因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。
2. 游戏中为了美观,适用性强,可能需要采用外部文件引入的图片贴图,有关贴图,在 MIDP2.0 中提供了用于增强游戏功能的 game 包,使得解决静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案。
3. 玩家飞机的运行可以通过键盘响应事件控制,但敌方则因为是自动运行,就需要有一定的智能性;敌人飞机的运行算法也要进行相关的设置,已免游戏过于简单。
4.对于双方发射的子弹应该赋予不同的速度,同时,程序应该设定敌人飞机的子弹不与敌人的飞机进行碰撞检测,已增加游戏的可玩性。
5. 双方的飞机在前进时也需要考虑到是否碰撞到对方飞机,以免重叠运行,造成许多物理上不可能的情况,缺乏真实感。
每一次刷新页面、每前进一步都需要进行相关的碰撞检测。
6.为了增加界面的美观,在程序中添加了白云。
由于手机屏幕大小有限,所以白云的数量和出现的位置要经过相关的设置,才能实现白云不规则出现的效果。
7. 游戏的地图不可能通过绘图来解决。
否则,不仅难于控制和处理过多的元素,也会因过多的大型图片而不能限制程序的大小,失去手机上程序的原则和 Java 的优势。
8. Java 是基于虚拟机的半解释型编译系统,其执行效率较 C等完全编译后的程序会低很多,程序如果不进行精简和优化,将可能导致运行的不流畅。
除开发过程中对结构上的控制、变量的使用、算法的优化等优化外,还可以使用混淆器Obfuscator进行程序打包后的优化。
9. 游戏的结束、开始、动态信息画面作为构成一个程序都是必不可少的重要部分。
良好的用户界面更是吸引用户的硬指标,相关的美术构图和人性化设置也需要有一定的考虑。
以上相关技术细节和整体流程将分别在以下小节阐述。
3.2 程序流程 MIDlet suite 是 MIDP 应用程序的最小单位,JAM 负责将手机内的 MIDlet suite 以图形化的方式呈现,让用户能够选取欲执行的 MIDlet suite,一旦选取了某个 MIDlet suite,操作系统就会激活 KVM 执行里面的 MIDlet。
MIDlet 及相关的支持类组成了 MIDP 应用程序的实际内容。
而 呼叫 MIDlet 的构 每 个 MIDlet 都 必 须 继 承 造函数javax.microedition.midlet.MIDlet StartApp 停止状态 Paused DestroyApp这个抽象类。
在 MIDP 规范中定义了MIDlet 的生命周期,以及可以存在的 运行状态 消减状态三种状态,包括 Paused、Active 以及 Active PauseApp DestroyedDestroyed,每一个 MIDlet 在任何时 DestroyApp刻只可能处于其中的一个状态。
这三 图 3-1 MIDlet 的流程种状态的转换关系如图 3-1 所示:MIDlet 有三个状态,分别是 pause、active 和 destroyed。
在启动一个 MIDlet 的时候,应用管理软件会首先创建一个 MIDlet 实例并使得他处于 pause 状态,当 startApp方法被调用的时候 MIDlet 进入 active 状态,也就是所说的运行状态。
在 active 状态调用 destroyAppboolean unconditional 或者 pauseApp 方法 可以 使 得 MIDlet 进 入destroyed 或者 pause 状态。
值得一提的是 destroyAppboolean unconditional方法,事实上,当 destroyApp方法被调用的时候,AMS 通知 MIDlet 进入 destroyed 状态。
在destroyed 状态的 MIDlet 必须释放了所有的资源,并且保存了数据。
如果 unconditional为 false 的时候,MIDlet 可以在接到通知后抛出 MIDletStateChangeException 而保持在当前状态,如果设置为 true 的话,则必须立即进入 destroyed 状态。
本程序采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。
运行程序后允许用户选择执行选项菜单,在开始游戏后将先从外部文件载入地图文件,对背景的所有物体进行绘图。
在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。
游戏开始后先绘制地图,并将各个对象实例化。
在主程序运行的线程中,游戏中所有的对象都应该运行在同一个线程下。
当敌人或者用户的子弹达到射程范围后,并不删除子弹对象,而是使用 setVisablefalse使其不能显示,当用户或敌人在次发射子弹时,只需使用 setVisabletrue设置成可以显示即可。
在屏幕重绘的主程序中,将在每次的循环中判断若干事件,以便程序进入相关的分支执行相关的反应代码。
如:玩家剩余飞机数是为 0、敌人、玩家飞机是否被击中、屏幕上相关信息的绘制等。
程 序 为 需要 完成 独 立功 能 的 模块 设置 了 单独 的 类 。
lzhhdm 类继 承 自 Midlet ,gameScrenn 类、MenuScreen 类继承自 GameCanvas,mybullets 继承自 Sprite 类。
载入程序后首先启动的是程序介绍的信息画面。
点击 ok 后调用 MenuScreen 类实现菜单。
如果选择进入游戏,则调用 gameScreen 类,并且中止 MenuScreen 类中的线程运行,已提高运行速度。
Mybullets 类为玩家子弹类。
3
上一篇:
图书管理系统
下一篇:
2018年汽车自驾运动营地攻防箭大赛总决赛圆满落幕