基于eclipse平台的飞机游戏的开发毕业论文设计(编辑修改稿)内容摘要:
后台是 Java Application Manager。 它所使用的传输媒体可以是红外线、网络、以及其他可用来传输的媒体。 Java Application Manager 会从网络上下载代表该 Application Suite 的 JAR 档,接着在手机上安裝此 MIDlet Suite,然后在手机开始执行该应用程序。 本章小结 第二章介绍了 Java 语言的特点、本 程序的开发环境及其相关工具的原理和使用。 5 3 程序结构、思想和相关技术 本程序需要解决的主要技术问题 游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。 一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。 因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。 游戏中为了美观,适用性强,可能需要采用外部文件引入的图片贴图,有关贴图,在 中提供了用于增强游戏功能的 game 包,使得解决静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案。 玩家飞机的运行可以通过键盘响应事件控制,但敌方则因为是自动运行,就需要有一定的智能性;敌人飞机的运行算法也要进行相关的设置,已免游戏过于简单。 对于双方发射的子弹应该赋予不同的速度,同时,程序应该设定敌人飞机的子弹不与敌人的飞机进行碰撞检测,已增加游戏的可玩性。 双方的飞机在前 进时也需要考虑到是否碰撞到对方飞机,以免重叠运行,造成许多物理上不可能的情况,缺乏真实感。 每一次刷新页面、每前进一步都需要进行相关的碰撞检测。 为了增加界面的美观,在程序中添加了白云。 由于手机屏幕大小有限,所以白云的数量和出现的位置要经过相关的设置,才能实现白云不规则出现的效果。 游戏的地图不可能通过绘图来解决。 否则,不仅难于控制和处理过多的元素,也会因过多的大型图片而不能限制程序的大小,失去手机上程序的原则和 Java 的优势。 Java 是基于虚拟机的半解释型编译系统,其执 行效率较 C++等完全编译后的程序会低很多,程序如果不进行精简和优化,将可能导致运行的不流畅。 除开发过程中对结构上的控制、变量的使用、算法的优化等优化外,还可以使用混淆器 (Obfuscator)进行程序打包后的优化。 游戏的结束、开始、动态信息画面作为构成一个程序都是必不可少的重要部分。 良好的用户界面更是吸引用户的硬指标,相关的美术构图和人性化设置也需要有一定的考虑。 以上相关技术细节和整体流程将分别在以下小节阐述。 程序流程 MIDlet suite 是 MIDP 应用程序的最小单位, JAM 负责将手机内的 MIDlet suite 以图形化的方式呈现,让用户能够选取欲执行的 MIDlet suite,一旦选取了某个 MIDlet suite,操作系统就会激活 KVM 执行里面的 MIDlet。 MIDlet 及相关的支持类组成了 MIDP 应用程序的实际内容。 而 每个 MIDlet都必须继承。 在 MIDP规范中定义了 MIDlet的生命周期,以及可以存在的三种状态,包括 Paused、 Active 以及 Destroyed,每一个MIDlet 在任何时刻只 可能处于其中的一个状态。 这三种状态的转换关系如图 31 所示:MIDlet 有三个状态,分别是 pause、 active和 destroyed。 在启动一个 MIDlet 的时 候,应用管理软件会首先创建一个 MIDlet实例并使得他处于 pause 状态,当 startApp()方法被调用的时候 MIDlet 进入 active 状态,也就是所说的运行状态。 在 active 状态调用destroyApp(boolean unconditional) 或者pauseApp() 方 法可以 使得 MIDlet 进入消减状态 (Destroyed) 停止状态 (Paused) 运行状态 (Active) StartApp() DestroyApp() 呼叫 MIDlet 的构造函数 DestroyApp() PauseApp() 图 31 MIDlet 的流程 6 destroyed 或者 pause 状态。 值 得一提的是 destroyApp(boolean unconditional)方法,事实上,当 destroyApp()方法被调用的时候, AMS 通知 MIDlet 进入 destroyed 状态。 在 destroyed 状态的 MIDlet 必须释放了所有的资源,并且保存了数据。 如果 unconditional 为 false 的时候, MIDlet 可以在接到通知后抛出MIDletStateChangeException 而保持在当前状态,如果设置为 true 的话,则必须立即进入 destroyed 状态。 本程序采用面向对象的设计模式,对游戏 中的所有物体赋予对象的概念和属性。 运行程序后允许用户选择执行选项菜单,在开始游戏后将先从外部文件载入地图文件,对背景的所有物体进行绘图。 在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。 游戏开始后先绘制地图,并将各个对象实例化。 游戏中所有的对象都应该运行在同一个线程下。 当敌人或者用户的子弹达到射程范围后,并不删除子弹对象,而是使用 setVisable(false)使其不能显示,当用户或敌人在次发射子弹时,只需使用 setVisable(true)设置成可以显示 即可。 在屏幕重绘的主程序中,将在每次的循环中判断若干事件,以便程序进入相关的分支执行相关的反应代码。 如:玩家剩余飞机数是为 0、敌人、玩家飞机是否被击中、屏幕上相关信息的绘制等。 程序为需要完成独立功能的模块设置了单独的类。 lzhhdm 类继承自 Midlet, gameScreen 类、MenuScreen 类继承自 GameCanvas, mybullets 继承自 Sprite 类。 载入程序后首先启动的是程序介绍的信息画面。 点击 ok 后调用 MenuScreen 类实现菜单。 如果选择进入游戏,则调用 gameScreen 类,并且中止 MenuScreen 类中的线程运行,已提高运行速度。 Mybullets 类为玩家子弹类。 Canvas 类 为了能有程序开发人员控制接口的外观和行为,需要使用大量的初级用户接口类,尤其在游戏程序中,几乎完全依赖的就是 Canvas 抽象类进行绘图。 从程序开发的观点看, Canvas 类可与高级 Screen 类交互,程序可在需要时在 Canvas 中掺入高级类的组件。 Canvas 提供了键盘事件、指点杆事件(如果设备支持),并定义了允许将键盘按键映射为游戏控制键的函数。 键盘事件由键代码指定,但这样控制游戏会导致缺乏通 用性,并不是每个设备的键盘布局都适合游戏的操作。 应当将键代码转换为游戏键的代码,以便硬件开发商能定义他们自己的游戏键布局。 Graphics 类 Graphics 类提供了简单的 2D 绘图功能。 它具有 24 位深度色彩的绘制能力,以三原色分别各占一个字节表示其颜色。 程序只能在 paint()函数中使用 Graphics 绘制, GameCanvas 可调用 getGraphics()函数直接绘制在缓冲区上,可以在任何时间请求传输到前台。 其对象会被传给 Canvas 的 paint()函数,以便最终显示。 技术下的绘制背景技术 在没有 前,进行游戏绘图一般需要手动编程使用双缓冲。 需要在 paint()方法内将所想要画的图形画在一张预先准备好的背景上,等所有绘图操作都完成后再将背景的数据拷贝到实际的屏幕上。 Image 类提供了一个建立背景的静态方法 createImage(int width, int height),再利用 getGraphics()方法取得属于这个背景的 Graphics 对象,所进行的绘图操作都会作用在背景上,等到全部的绘图操作完成后,再调用 drawImage()方法将背景的数据复制到实际 显示的屏幕上。 这样的技术在绘制动画时特别有用。 绘制动画时经常需要不断地更新画面,而更新画面的操作就是先将屏幕以 fillRect()的方式清除,再将下一张图片画在屏幕上,然而反复的清除及重绘会造成屏幕的闪烁现象( flicker) ,因此使用双重缓冲的好处就是在背景进行这个清除及重绘的操作,再将完成的绘图拷贝到屏幕上,由于用户看不到清除的操作,因此就不会出现闪烁的现象了。 不过在某些 MIDP 的实现上已经加上了双重缓冲的支持,因此在处理前应先利用 Canvas 类的 isDoubleBuffer()方法来判断。 新增的 GameCanvas 包 7 J2ME 的流行促进几个运营商和制造商开发了一些支持游戏的类,但是,这却造成了游戏缺乏可移植性的问题,例如,很难将使用 Siemens 的 Sprite 类的游戏移植到 Nokia 上。 在 版本发布后,这些游戏移植性问题初步得到了解决。 新加入了 GameCanvas、 Sprite、 Layer、 LayerManager、 TiledLayer 五个与游戏开发相关的类。 其中 Layer 类一般不会直接用到。 Game 类的出现不仅降低了错 误出现的几率,也使游戏代码变的更小,因为开发者不需要自己编写象 Sprite 这种例子。 下面将简要介绍 Game 类。 GameCanvas 类继承自 Canvas,所以具有 Canvas 所具有的功能,还额外增加了一些便于游戏设计的功能。 比如: GameCanvas 类直接提供了 getKeyStates(),使程序员可以在同一个线程自己侦测按键的状态。 GameCanvas 类提供了 flushGraphics()的功能,实现了双缓冲技术。 所谓的 Sprite,就是画面上独立移动的图形。 Sprite 类是继承自 Layer 的用于存储多桢的基本可视元素。 不同的 frame 可交相显示,构成动态的效果。 图片可翻转、颠倒、由一个主角图片就可以方便的得到所有方向的显示状态,相比原先只能使用Canvas 绘图,需要将所有方向的主角图象都绘制在 png 图象中简化了许多。 Sprite 也可以从整合的图象中读图,读图时将把大图分解为若干等宽等高的小图。 每个小图按照其排列顺序有相应的序号,在程序中调用其序号,就可以绘制出相应的图片。 本程序中的双方飞机、子弹、白云都由 Sprite 继承得到。 LayerManager 提供控制整体画面层的控制。 它包括 了一系列自动获取了代号和位置的层,简化了各层加入游戏画面的过程,提供了自动排序和绘制的能力。 LayerManager 存储了一个层的列表,新的层可以用函数附加、删除和插入。 层的序号相当于坐标的 Z 轴, 0 层表示最接近用户视觉,层数越高,离用户越远。 层号总是连续的,即使有中间的层被移除,其他层的序号会作相应的调整以保持整体的完整性。 LM 中的 View Window 控制着与 LM 相对坐标的可视区域。 改变 View Window 的位置可以制造出滚动屏幕的效果。 TiledLayer 是有一组图象格元素组成的整块虚拟图象。 该类 使不需要高分辨率的图象就能创建大幅图面成为可能。 这项技术通常应用在 2D 游戏平台的滚动背景的绘图。 一块整图可被分割成等大小的图象格,每块格有其对应的序号,按照行列递增。 多块小格可由大块同时替换组合而模拟动态的背景,这不需要逐块替换所有的静态图象格而显得非常方便。 PNG 图片格式 PNG(Portable Network Graphics)格式是 MIDlet 唯一支持的图象格式, PNG 具体格式由 PNG Specification,Version 定义的。 PNG 格式提供透明背景的图象,这对绘制游戏画面 和被操纵主角极有帮助。 飞机之间或与白云碰撞时就不会因为背景有特定的颜色,显示出的效果像贴上的图片而缺乏真实感,物体之间轻微重叠时最上层图片也不会覆盖超过其有效象素外的部分。 PNG 格式图片中包含许多定义其图片特性的冗余部分 (Chunks)。 这些代码包含在每一个单独的 png格式图象中,然而如果将多个 png 图象合并在一张幅面稍大一些的整图中,多个 chunks 就可以得到精简,图片的大小可以得到控制。 使用 Image 类中的 createImage 函数可从整图中分割出所需要的元素。 在 Game 包中的 TiledLayer 和 Sprite 类都整合了这样的功能。 本程序中的地图元素都集成在一张 图片中,实现了方便的管理和程序体积的精简。 玩家飞机的控制方式和敌人方的智能运行 GameCanvas 提供 getKeyStates 函数可获取当前键盘上的信息。 将以位的形式返回键盘上所有键的按与释放的状态,当 bit 为 1 时,按键就是被按下的状态,为 0 时则为释放状态。 只需要此一个函数的返回值就可以返回所有键的状态。 这保证了快速的按键和释放也会被循环所捕捉。 同时,这样的机制也可检测到几个键同时按下的状态,从而提供斜向 运行等相应功能 (本程序没有实现斜上运行功能 )。 程序运行时应该对玩家飞机是否飞出屏幕的。基于eclipse平台的飞机游戏的开发毕业论文设计(编辑修改稿)
相关推荐
进步。 而运行于计算机上的本系统的开发,为企业的工作效率和经济效益带来了一个质的飞跃,主要表现有以下几个方面: 1)本管理系统的运行能代替人工进行很多繁杂的劳动; 2)本管理系统的运行能节省很多资源,比如如纸质和笔墨; 3)本管理系统的运行能大大的提高企业的工作效率; 所以,本系统在经济上是可行的。 技术可行性: 技术上的可行性分析,主要是分析技术条件能否允许顺利完 成开发工作,软
梯按照顾客要求自动上下的装置 [4]。 四层电梯控制器的功能如下: (1) 每层电梯入口处设上下请求开关,电梯内设顾客到 达层次的停站请求开关。 (2) 设有电梯入口处位置指示装置及电梯运行模式 (上升或下降 )指示装置。 (3) 电梯每秒上升 (下降 )一层楼。 (4) 电梯到达有停站请求的楼层,经过 1 秒电梯门打开,开门指示灯亮,开门 4 秒后,电梯门关闭 (开门指示灯灭 ),电梯继续进行
........................................................................................................................ 18 1 第 1章 绪论 电子商务的概念 电子商务, Electronic Commerce,通常是指是在全球各地广泛的商业贸易活动中
( 4)噪声电压 使输入为零时,输出负载 LR 上的电压称为噪声电压。 测量:使输入端对地短路,音量电位器为最大值,用示波器观察输出负载的电压 波形,用交流表来测量其有效值。 功率放大器的分类 类功放 A 类放大器也称为甲类放大器,静态工作点选在负载线的中间,在输入信号的整个周期内电流连续地流过所有输出器件,工作期间不产生开关失真和交越失真,处于良好的线性工作状态。 但电路效率较低
D、 CAM等技术的结合,使企业能对现代市场产品的多样性、复杂性、可靠性、经济性等做出迅速反应,增强了企业的市场竞争能力。 在许多行业中,计算机辅助分析已经作为产品设计与制造 过 程中 不可或缺 的一种工艺规范加以实施。 如,以国外某大汽车公司为例,绝大多数的汽车零部件设计都必须经过 很多次 的计算机仿真分析,否则 就无法 设计审查, 也就无法 试制 更别说 投入生产。
a(s)按某种方法转换成数字滤波器的系统函数 H(z)。 这是因为模拟滤波器的设计方法已经很成熟,不仅有完整设计公式,还有完善的图表和曲线供查阅;另外,还有一些典型的优良滤波器类型可供我们使用。 为了保证转换后的 H(z)稳定 且满足技术指标要求,对转换关系提出两点要 求: 1. 因果稳定的模拟滤波器转换成数字滤波器,仍是因果稳定的。 2. 数字滤波器的频率相应模仿模拟滤波器的频响特性, s