Java中打飞机是怎么飞起来的游戏如何用飞机是怎么飞起来的的坐标去弄一个对象

【精品】java打飞机是怎么飞起来的遊戏设计与实现论文源代码,精品,java,飞机是怎么飞起来的,游戏,设计,实现,论文,源代码 广西飞模式网络服务有限公司 夀 j _Q 軂 g Q 鳶 ? 迾 j _Q 軂 - “ , 第 1 页 1 绪论 机软件现状 在信息社会中手机及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展手机及其他无线设备上網络势在必行。但是传统手机存在以下弊端 1. 传统手机出厂时均由硬件厂商固化程序程序不能增加、删除,有了错误也不能更新、修改若要增加新功能必须另换一部手机。 2. 传统手机访问互联网是通过 所有网络资源必须接通网络才能在线访问非常耗时、费用亦很高。 而 术茬无线应用方面的优势 非常明显 1. 应用程序可按需下载而不是购买由硬件商提供的套件,可升级空间大 2. 术提供了一个类库,它使的应用開发商可以创建更为直觉、丰富的用户界面 3. 术使网络带宽的应用更为有效因为应用程序可以下载到器件上,并在本地运行仅仅是在连接到服务器时才会占用网络带宽。 基于以上分析 机将是未来手机的发展方向,是业界的热点 2绍 虽然 经被用到许多企业级软体上,可是其实骨子里面还是非常适合用在嵌入式系统之中 台演进 到 , 台分别针对不同领域的需求被分成四个版本亦即 及 中 位在消费性电子产品嘚应用上。这个版本针对资源有限的电子消费产品的需求精简核心类库并提供了模块化的架构让不同类型产品能够随时增加支持的能力。这个版本的应用层面相当广泛会是未来 台发展的重点项目。 1999 年的 发人员大会上初次亮相它的目标是面向智能无线设备和小型计算机設备的开发人员。 一个关键优点是 所有支持 设备 都是兼容的。支持 设备就是任何运行 拟机器的计算机 生产厂商都生产支持 设备。、 台昰由配置( 简表( 成的配置是提供给最大范围 设备使用的最小类库集合,在配置中同时包含 拟机简表是针对一系列设备 提供的开发包集合。在 还有一个重要的概念是可选包( 它是针对特定设备提供的类库比如某些设备是支持蓝牙的,针对此功能 供了对蓝牙的支持 第 2 頁 目前, 有两个最主要的配置分别是 作为第一个面对小型设备的 用开发规范, 由包括 内的 18 家全球知名公司共同协商完成的 心配置中的┅个,可以支持一个或多个 目标主要面向小型的、网络连接速度慢、能源有限 (主要是电池供电)且资源有限的设备如手机、 。 而 是主偠用于运算能力相对较佳、在电力供应上相对比较充足的嵌入式装置 比方说冷气机、电冰箱、电视机机顶盒 机游戏应具有的特征 一个手机遊戏应该具有以下特征 易于学习 既然手机游戏面向的是普通消费者而不是计算机专家那么他们不可能深入的学习游戏技巧。消费者不会婲几个小时去研究一个 3 元的手动操作的游戏保持游戏的简单是最基本的要求。 可中断性 多任务处理是手机生活方式的基本特征手机用戶常常在任 务(如等一个电子邮件或者等车)之间有一小段时间。而游戏、日历管理、通讯和工作数据访问使用的是同一个设备所以一個好的手机游戏应该提供短时间的娱乐功能,并且允许用户在游戏和工作模式之间顺利切换 基于订阅手机游戏的盈利成功取决于他们巨夶的使用量。一开始开发和设计每个游戏都是昂贵的如果一个手机游戏开发者要赢利的话,重要的是同一个游戏引擎多个标题,基本嘚故事情节类似基于订阅的游戏是不断产生收入的最好方法。 丰富的社会交互 不管一个游戏设计得多好只要玩家找到了它的根本模式戓者玩完了所有的游戏路径很快 就会厌烦这个游戏。对于一个基于订阅的游戏重要的是与别的玩家合作以增强所玩游戏的智力和随机性。在今天纷繁复杂的多玩家游戏中具有丰富社会交互的游戏证明是成功的 利用手机技术的优点 巨额的手机技术研发费用都花在提高设备囷网络的可用性和可靠性上面。因此手机设备硬件和网络协议与桌面 /控制台世界(如全球定位系统 展、条形码扫描仪、和短消息服务 多媒体信息服务 讯)有着非常大的差别。好的手机游戏应该利用那些更新的设备特征和网络基础设备的优点 游戏背景介绍 在抗战中,由国囻 政府领导的中国空军是所有国民党军队中抗战最为彻底也最为英勇的部队,虽然开战之初力量悬殊但是面对穷凶极恶的日本侵略者,他们毫不畏惧视 第 3 页 死如归,全力以赴投身到民族救亡的伟业中去用自己的鲜血和生命谱写了中华民族最为豪迈的诗篇。自一九三②年二月五日 “ 一 · 二八 ” 事件始至一九四五年八月十四日止,抗战期间共出动飞机是怎么飞起来的一千一百二十八批,八千八百四┿七架次击落敌机五百二十九架,击伤敌机一百一十架炸毁敌机二百二十七架。同时中国空军空战中一共牺牲空勤人员六百六十一洺。 我至今仍然清楚的记得在抗日战争即世界反法西斯 战争胜利 50 周年的时候,我在一本描述抗战空军的书里第一次看到 阎海文 烈士那年圊的面孔时所带来的震撼第一次看到高志航、沈崇海等空军烈士的事迹时所带来的感动,第一次听说碧山空战时的无奈 时至今日,已經很少有人能够记得在中国的天空献身的抗日英雄们我只能引用下面这句话来表达我的心情“你们的名字无人知晓,你们的业绩与世长存 ” 我的这款游戏取名为览桥风光以纪念从览桥中央航校走出的英雄们。 章小结 引言和第一章中介绍了手机在无线应用方向的当今概况 相关内容,分析了 起的重要作用描述了本论文的相关背景。 2 开发环境及相关技术的介绍 开发环境 操作系统 P 程序语言 开 发 包 M 2 第 4 页 言特点 1. 岼台无关性 进虚拟机原理并运行于虚拟机,实现不同平台之间的 口 数据类型与机器无关。 2. 安全性 编程类似 C,但舍弃了 C的指针对存储器地址的直接操作程序运行时,内存由操作系统分配这样可以避免病毒通过指针入侵系统。它提供了安全管理器防止程序的非法访问。 3. 媔向对象 收了 C面向对象的概念将数据封装于类中,实现了程序的简洁性和便于维护性使程序代码可以只需一次编译就可反复利用。 4. 分咘式 供了用 用其相关技术可以 十分方便的构建分布式应用系统 5. 健壮性 力与检查程序在编译和运行时的错误,并自动回收内存减少了内存出错的可能性。 消了 针、 句、多重继承、 句、操作符、重载等不易被掌握的特性提供垃圾收集器自动回收不用的内存空间。 关于 一个開放源代码的、基于 可扩展开发平台就其本身而言,它只是一个框架和一组服务用于通过插件组件构建开发环境。幸运的是 带了一個标准的插件集,包括 发工具( 虽然大多数用户很乐于将 作 使用但 目标不仅限于此。 包括插件开发环境( 这个组件主要针对希望扩展 软件开发人员因为它允许他们构建与 境无缝集成的工具。由于 的每样东西都是插件对于给 供插件,以及给用户提供一致 和统一的集成开發环境而言所有工具开发人员都具有同等的发挥场所 。 这种平等和一致性并不仅限于 发工具尽管 使用 言开发的,但它的用途并不限于 訁;例如支持诸如 C/C、 编程语言的插件已经可用,或预计会推出 架还可用来作为与软件开发无关的其 第 5 页 他应用程序类型的基础,比如內容管理系统 一个开放源代码的、基于 可扩展开发平台。就其本身而言它只是一个框架和一组服务,用于通过插件 组件构建开发环境 于 司针对 出的用于手机和 移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包它通用性高,开发出的应用程序鈳保证能运行在大部分设备上而不像专用厂商具有一定的不兼容性。虽然它没有强大的功能和完善的调试手段但它提供运行模拟器的朂基本组件,是其他 集成采用的必备元素 机中负责调配程序运行资源的管 理后台是 所使用的传输媒体可以是红外线、网络、以及其他可鼡来传输的媒体。 从网络上下载代表该 接着在手机上安裝此 后在手机开始执行该应用程序。 章小结 第二章介绍了 言的特点、本程序的开發环境及其相关工具的原理和使用 3 程序结构、思想和相关技术 程序需要解决的主要技术问题 1. 游戏程序是一项精度 要求很高的程序系统,洇为其代码利用率很高一个实时运行的最终作品,每秒都会运行成千上万行程序绘图事件、键盘事件都会以极高的频率在后台等待响應,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误甚至死循环。因此其逻辑设计应当相当严谨,需将所有可能發生的事件及意外情况考虑在设计中 2. 游戏中为了美观,适用性强可能需要采用外部文件引入的图片贴图,有关贴图在 提供了用于增強游戏功能的 ,使得解决静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案 3. 玩家飞 机的运行可以通过键盘响应事件控制,但敌方则因为是自动运行就需要有一定的智能性;敌人飞机是怎么飞起来的的运行算法也要进行相关的设置,已免游戏过于简单 时,程序应该设定敌人飞机是怎么飞起来的的子弹不 第 6 页 与敌人的飞机是怎么飞起来的进行碰撞检测已增加游戏的可玩性。 5. 双方的飞机是怎么飞起来的在前进时也需要考虑到是否碰撞到对方飞机是怎么飞起来的以免重叠运行,造成许多物理上不可能的情况缺乏真实感。烸一次刷新页面、每前进一步都需要进行相关的碰撞检测 程序中添加了白云。由于手机屏幕大小有限所以白云的数量和出现 的位置要經过相关的设置,才能实现白云不规则出现的效果 7. 游戏的地图不可能通过绘图来解决。否则不仅难于控制和处理过多的元素,也会因過多的大型图片而不能限制程序的大小失去手机上程序的原则和 优势。 8. 基于虚拟机的半解释型编译系统其执行效率较 C等完全编译后的程序会低很多,程序如果不进行精简和优化将可能导致运行的不流畅。除开发过程中对结构上的控制、变量的使用、算法的优化等优化外还可以使用混淆器 行程序打包后的优化。 9. 游戏的结束、开始、动态 信息画面作为构成一个程序都是必不可少的重要部分良好的用户堺面更是吸引用户的硬指标,相关的美术构图和人性化设置也需要有一定的考虑 以上相关技术细节和整体流程将分别在以下小节阐述。 程序流程 用程序的最小单位 责将手机内的 图形化的方式呈现,让用户能够选取欲执行的 旦选取了某个 作系统就会激活 行里面的 相关的支歭类组成了 用程序的实际内 容而 每个 范中定义了生命周期,以及可以存在的三种状态包括 及一个 任何时刻只可能处于其中的一个状态。这三种状态的转换关系如图 3示三个状态分别是 启动一个 时 候,应用管理软件会首先创建一个 例并使得他处于 态当 消减状态 停止状态 運行状态 呼叫 构造函数 图 3流程 第 7 页 方法被调用的时候 入 态,也就是所说的运行状态在 态调用 者 方法可以使得 入者 态。值得一提的是 法倳实上,当 方法被调用的时候 知 入 态。在态的 须释放了所有的资源并且 保存了数据。如果 时候 以在接到通知后抛出 保持在当前状态,如果设置为 话则必须立即进入 态。 本程序采用面向对象的设计模式对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用戶选择执行选项菜单在开始游戏后将先从外部文件载入地图文件,对背景的所有物体进行绘图在主程序运行的线程中,画面刷新将以┅定的频率采用双缓冲技术对屏幕重绘实时反映整个游戏的进行状态。 游戏开始后先 绘制地图并将各个对象实例化。在主程序运行的線程中游戏中所有的对象都应该运行在同一个线程下。当敌人或者用户的子弹达到射程范围后并不删除子弹对象,而是使用 其不能显礻当用户或敌人在次发射子弹时,只需使用 置成可以显示即可在屏幕重绘的主程序中,将在每次的循环中判断若干事件以便程序进叺相关的分支执行相关的反应代码。如玩家剩余飞机是怎么飞起来的数是为 0、敌人、玩家飞机是怎么飞起来的是否被击中、屏幕上相关信息的绘制等 程序为需要完成独立功能的模块设置了单独的类。 继承自 、 继承自 承自 载入程序后首先启动的是程序介绍的信息画面。点擊 调用 实现菜单 如果选择进入游戏,则调用 并且中止 中的线程运行,已提高运行速度 为玩家子弹类。 为了能有程序开发人员控制接ロ的外观和行为需要使用大量的初级用户接口类,尤其在游戏程序中几乎完全依赖的就是 象类进行绘图。从程序开发的观点看序可茬需要时在 点杆事件(如果设备支持),并定义了允许将键盘按键映射为游戏控制键的函数键盘事件由键代码指定,但这样控制游戏会導致缺乏通用性并不是每个设备的键盘布局都适合游戏的操作。应当将键代码转换为游戏键的代码以便硬件开发商能定义他们自己的遊戏键布局。 第 8 页 提供了简单的 2D 绘图功能它具有 24位深度色彩的绘制能 力,以三原色分别各占一个字节表示其颜色程序只能在 函数中使鼡 函数直接绘制在缓冲区上,可以在任何时间请求传输到前台其对象会被传给 函数,以便最终显示 术下的绘制背景技术 在没有 ,进行遊戏绘图一般需要手动编程使用双缓冲需要在 方法内将所想要画的图形画在一张预先准备好的背景上,等所有绘图操作都完成后再将背景的数据拷贝到实际的屏幕上 提供了一个建立背景的静态方法 再利用 方法取得属于这个背景的 象,所进行的绘图操作都会作用在背景上等到全部的绘图操作完成后,再调用 方法将背景的数据复制到实际显示的屏幕上 这样的技术在绘制动画时特别有用。绘制动画时经常需要不断地更新画面而更新画面的操作就是先将屏幕以 的方式清除,再将下一张图片画在屏幕上然而反复的清除及重绘会造成屏幕的閃烁现象( ,因此使用双重缓冲的好处就是在背景进行这个清除及重绘的操作再将完成的绘图拷贝到屏幕上,由于用户看不到清除的操莋因此就不会出现闪烁的现象了。不过在某些 实现上已经加上了双重缓冲的支持因此在处理前应先利用 的 方法来判断。 增的 是这却慥成了游戏缺乏可移植性的问题,例如很难将使用 的游戏移植到 。 在 本发布后这些游戏移植性问题初步得到了解决。 加入了 个与游戏開发相关的类其中 一般不会直接用到。 的出现不仅降低了错误出现的几率也使游戏代码变的更小,因为开发者不需要自己编写象 种例孓下面将简要介绍 。 继承自 以具有 具有的功能还额外增加了一些便于游戏设计 的功能。比如 直接提供了 ,使程序员可以在同一个线程自巳侦测按键的状态 提供了 的功能,实现了双缓冲技术 所谓的 是画面上独立移动的图形。 第 9 页 同的 成动态的效果图片可翻转、颠倒、甴一个主角图片就可以方便的得到所有方向的显示状态,相比原先只能使用 图需要将所有方向的主角图象都绘制在 象中简化了许多。 可鉯从整合的图象中读图读图时将把大图分解为若干等宽等高的小图。每个小图按照其排列顺序有相应的序号在程序中调用其序号,就鈳以绘制出相应的图片本程序中的双方飞机是怎么飞起来的、子弹、白云都由 承得到。 供控制整体画面层的控制它包括了一系列自动獲取了代号和位置的层,简化了各层加入游戏画面的过程提供了自动排序和绘制的能力。 储了一个层的列表新的层可以用函数附加、刪除和插入。层的序号相当于坐标的 Z 轴 0 层表示最接近用户视觉,层 数越高离用户越远。层号总是连续的即使有中间的层被移除,其怹层的序号会作相应的调整以保持整体的完整性 的 制着与 对坐标的可视区域。改变 位置可以制造出滚动屏幕的效果 有一组图象格元素組成的整块虚拟图象。该类使不需要高分辨率的图象就能创建大幅图面成为可能这项技术通常应用在 2D 游戏平台的滚动背景的绘图。一块整图可被分割成等大小的图象格每块格有其对应的序号,按照行列递增多块小格可由大块同时替换组合而模拟动态的背景,这不需要逐块 替换所有的静态图象格而显得非常方便 片格式 式是 一支持的图象格式, 体格式由 义的 式提供透明背景的图象,这对绘制游戏画面囷被操纵主角极有帮助飞机是怎么飞起来的之间或与白云碰撞时就不会因为背景有特定的颜色,显示出的效果像贴上的图片而缺乏真实感物体之间轻微重叠时最上层图片也不会覆盖超过其有效象素外的部分。 式图片中包含许多定义其图片特性的冗余部分 这些代码包含在烸一个单独的 式图象中然而如果将多个 象合并在一张幅面稍大一些的整图中,多个 可以得到精简图片的大小可以得到控制。使用 中的 Φ的 都整合了这样的功能本程序中的地图元素都集成在一张 片中,实现了方便的管理和程序体积的精简 家飞机是怎么飞起来的的控制方式和敌人方的智能运行 第 10 页 供 数可获取当前键盘上的信息。将以位的形式返回键盘上所有键的按与释放的状态当 1时,按键就是被按下嘚状态为 0时则为释放状态。只需要此一个函数的返回值就可以返回所有键的状态这保证了快速的按键和释放也会被循环所捕捉。同时这样的机制也可检测到几个键同时按下的状态,从而提供斜向运行等相应功能 本程序没有实现斜上运行功能 程序运行时应该对玩家飞機是怎么飞起来的是否飞出屏幕的范围进行检测,如果飞出屏幕就应该重新设定玩家飞机是怎么飞起来的的位置。 玩家飞机是怎么飞起來的被击中后为了平衡游戏的可玩性,玩家飞机是怎么飞起来的将有短暂时间无 敌即不进行碰撞检测,同时在屏幕右上角显示无敌时間 根据游戏设定,敌人飞机是怎么飞起来的不能与玩家飞机是怎么飞起来的重合,则他每走一步都需要检测一下是否与玩家飞机是怎麼飞起来的碰撞 中提供了 数,用于判断是否与某个 对象有图象上的重合(即游戏中的碰撞)同理,还需要检测玩家子弹与敌机、敌机與玩家子弹是否碰撞如果发生碰撞,将相关精灵图片替换为爆炸图片 敌人飞机是怎么飞起来的需要具有一定的智能性,以便对玩家攻擊使游戏具有一定的可玩性。敌人可以在适当时候转向或者开炮火 同时,程序应该检测敌机是否飞出了界外 在普通敌机中,有一组敵机的其中一架具有跟踪功能其原理为当其进入屏幕后,根据玩家飞机是怎么飞起来的的 X、 Y 坐标不断调整自己的 X、 达成跟踪的效果由於线程的关系,敌机器的改变方向有时并不是实时的这就可以使玩家有躲开撞击的可能,增强了游戏的可玩性 在游戏进行中出现的大型飞机是怎么飞起来的,由于其不可能立即被击落所以应该设置其的运行方法,理论上讲还是根据玩家飞机是怎么飞起来的的坐标但昰,在此设置一个标志位使得敌人在取的玩家位置后即开始玩家方向运动,这期间将不执行取得玩家飞机是怎么飞起来的位置重设飞荇方向 的步骤。这样做即防止了大飞机是怎么飞起来的变成跟踪飞机是怎么飞起来的,又使得大飞机是怎么飞起来的的运行具有不确定性 在关尾出现的 在屏幕上方左右移动并发射子弹。实际上此时 该通过玩家在游戏运行中的习惯性的运行方向,使用遗传算法来动态判断玩家下一步的运行方向,并且指挥普通飞机是怎么飞起来的出现在预测的位置上可惜由于时间关系没有实现。 弹的运行和控制 玩家嘚子弹是个精灵数组有 9个元素,表示玩家一次最多可以发射 3 组 9 发子弹对于一个完整的游戏来讲,应该根据关卡的不同而给予玩家不同嘚飞机是怎么飞起来的飞机是怎么飞起来的性能的差别在于子弹的射程不同。 由于本游戏仅有一关所以子弹速度设定的差别没有体现絀来。 当玩家一次发射了 3组子弹而这 3 组子弹并没有消失时,玩家将无法发射子弹 第 11 页 使用每组子弹的第一发作为与敌人进行碰撞检测嘚精灵,同时相关的标志位也设在第一发子弹中如果玩家子弹与敌机相撞,则敌机消失时子弹精灵的图片替换为爆炸图片,直到第二佽发射该组子弹时才将图片替换为子弹图片。 存的优化 手机内存空间小所以在程序设计时应该注意以下几点,以尽量减少内存的使用 1盡量缩短命名的长度在应用程序内,对于所建立的类 、接口、方法及变量名而言都需要赋予一个识别的名称,所命名的名称每多一个芓符就会在类文件内多产生一个字节对于一个较复杂的应用程序而言就会增加为数不小的数据量。所有这些可以借助混淆器来帮助实现 2所有代码写为一个类 3只使用一个线程。 4尽量不使用静态变量 5将 片合并成一张,减少图形数据的大小 将 式的小分辨率图象合并在一张夶的高分辨率图象中,由于减少了头文件的大小将比合并前的总大小减少许多。 存检测器 供了许多在运行时监视运行状态的工具 包括內存状况的检测(手机上的内存空间十分有限,必须时刻关注机载内存是否大于程序所能使用到的最大可能的内存空间)网络状况的检測,运行函数的跟踪等 内存检测器是内存跟踪测试随时间变化的调试器。其中允许强制垃圾回收 由于 言中,不像许多其他的如 C语言鈈需要指定回收函数中特定不使用的资源,资源回收机制将自动清空无效变量占用的空间在程序运行中也可以调用 的 函数手动收回废弃嘚内存。 于混淆器 言并没有完全编译成二进制可执行文件编译出的 件是一种介于源程序和二进制之间的一中基于半解释的字节码,需要虛拟机来执行它包括了所有的信息。然而这样会导致 容易被反编译为源代码从而不能保护作者的知识成果。目前流行的如 反编译工具鈳以以很快的速度生成源文件如果不加以施行有效的措施,将造成严重的后果 由此引入混淆器的概念。混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号如果缺乏相应的函数名指示和程序注释,即使被反编译 也将难以阅读。 第 12 页 混淆器的作用不僅仅是保护代码它也有精简编译后程序大小的作用。由于以上介绍的减少变量、函数的命名长度的关系编译后也会从 件中减少这些冗餘的信息。混淆后体积大约能减少 25,这对当前费用较贵的无线网络传输是有一定意义的 章小结 第三章中介绍了程序的流程、相关技术嘚思想及其在本程序中的应用。对游戏基本算法等做了详细叙述具体算法的代码实现和详细流程将在下章介绍。 4 程序分析和具体实现 戏進入前的 选择 每个 序都必须有一个主类该类必须继承自 控制着整个程序的 第 13 页 运行,并且可以通过相应函数从程序描述文件中获取相关嘚信息该类中拥有可以管理程序的创建、开始、暂停(手机中很可能有正在运行程序却突然来电的情况,这时应进入暂停状态)、结束的函数。本程序主类为 实现接口 首先显示的是游戏的背景介绍(图 4为此在类 对象 a,在 函数中判断 否为真如果为真的话,将创建 的实唎 a并且调用方法在表单上放置 的实例以显示游戏背景信息。使用语句 ok;实例化 对象 用 命令建立 令与 间的关联调用 命令使 立关联。调用 函數显示背景介绍窗口 当玩家点击 将调用 以显示游戏菜单 4 类 承自 ,并实现接口 类 定义了 个整型变量及布尔型变量 中 值为 0表兰色 值为 0表红銫 ,值为 0表 兰灰色,即背景条当玩家按住上或下键时,在函数 的整型变量 应的减 1 或加 1相应的,在 函数中会根据 制选项是否被选中在函數 中,如果 真则不停的 ,设置 意义在于,当进入游戏主画面后 值为 终止绘制选项的,提高游戏速度 当移动选项条到某项,并点击 在 方法中根据 图 4 图 4戏的菜单 第 14 页 的值判断选择了哪个选项,列如当选择“关于”时将调用 中的 方法以显示 ” 关于 ” 界面(图 4在 方法中, 对潒 a示清空 重新调用用 方法在表单上放置 的 实例以显示游戏关于信息“帮助“界面的显示与”关于“界面相同,只不过调用的是 方法 4.2 在介绍游戏主类 之前,应该先简要说明一下玩家子弹类 实际上 ,是应该删除的,其要实现的功能应该放在 中但是由于设计游戏 的过程也是┅个学习的过程,而在当时我并没有意识到这一点。 继承自 以实现玩家子弹的相关功能。首先创建子弹状态数组 [] 中, [i][0]代表子弹的 [i][1]代表子弹的 i][2]代表子弹 Y 方向速度 [i][3]代表子弹存活状态 由于此类是在早期设计的,而之后子弹存活状态使用了子弹射程作为标志位所以其并没囿起到作用 。类中定义的方法起到定义玩家子弹发射坐标的作用 此方法在设计时起到的作用是消除每按一次开火玩家子弹位置就重新定位這个 是这个 全可以用设置标志位的方法消除 。方法 实现的功能为更新玩家的子弹位置并且检测玩家子弹与普通敌人的碰撞及记录玩家戰果 更新子弹位置的功能可以由使用 加设置标志图 4进入游戏 1550 0 显示敌人 玩家被击落了吗 玩家是否还有机会 继续游戏 是否过关 返回主界面 Y Y N Y Y N 图 4-4 主偠关系流程图 N 第 15 页 位的方法取代;由于设计这个类的时候并没有考虑到添加 ,所以在此检测碰撞但添加 功能后,此处的检测完全可以和飛机是怎么飞起来的对飞机是怎么飞起来的等的碰 撞检测封装在同一个方法中 在 建立了对象数组 ],代表玩家所能发射的 9 发子弹 戏逻辑忣 是游戏的主类,决定着敌人何时出现控制着敌人出现的方法,判断敌人及玩家是否被击中等它运行在独立的线程中,以恒定的频率刷新画面本程序设置为1/20 秒。其主逻辑如图 4 所实现的功能 要实现地图的滚动、敌人飞机是怎么飞起来的的相关 属性、玩家的相关属性等功能 包括了 样所有静态和动态的图象都不需要手动刷新,只需要在 加 入所有的需要控制的精灵 ,在统一由 新即可 , 因此 ,在 创建 对象 在构造函数Φ实例子化 其他精灵类的对象如敌人飞机是怎么飞起来的、玩家飞机是怎么飞起来的、玩家飞机是怎么飞起来的的子弹、敌人的子弹、 屬的子弹都需在 类中建立相应的对象,并在构造喊数中实例化且由 方法添加到 对象 图的创建 由于手机存储空间的限制,不可能将整张地圖完整地存储在手机中为了节约空间,往往提出地图中相同的图片组成一张 式的图片然后象拼图一样拼出地图来,专业的游戏设计者往往自己写一个地图编辑器以使拼图过程不是那么痛苦。 创建地图就需要使用 的是由一块一块类似用瓷砖拼凑起来的画面地图实际即為 一个对象。先利用 构造函数建立据构造函数的参数可以给定 组 的大小并且地图图片切割成等尺寸的画面,并调用 设置具体的图象格内嫆地图 图片如图 4 因此,创建一个返回 方法 以便在 的构造函数中调用。在方法中定义整型数组 以存储 索引值。i]设定 内容以形成地图。其中i0;碰撞后,将变量 值为 1在之后的 if1判断语句中,重新设定玩家飞机是怎么飞起来的的图片和可视状态同时使用 函数设定玩家非的位置在屏幕下方。设定 ,即不检测碰撞玩家有短暂时间无敌,无敌时间由屏幕右上角进度条表示设定 ,即飞入屏 幕的过程中手机键盘是鈈可以用的设置 ,即以上这些设置只执行一便。 在 if2判断语句中使用语句 0,飞机是怎么飞起来的自己向上运动,使用 if 语句判断 为屏幕的宽度 为玩家飞机是怎么飞起来的 ,如果条件为真则使用 ,语句将飞机是怎么飞起来的设置在紧靠屏幕右边的位置。上、下、左的设置原理同仩 语句 0的作用是消除左、右飞后在上、下飞时飞机是怎么飞起来的的形态不变的 果为真,则执行语句 ,表示只要左键松开飞机是怎么飞起來的的形态都是平飞 根据游戏设定,玩家一次最多只能发三组子弹 并且子弹有射程限制 在类 ,而当玩家按下“开火“键时,即 0中判断条件为真时首先执行循环语句 i0;过改变标志位的值使得 不在执行,四字消失 如果玩家被击落 后并没有点“返回“,而此时背景会一直运動到关尾,考虑到其与关尾 用 3发子弹如 消失 ,将会出现子弹乱飞的情况。所以如果判断语句 为真,则表示离地图的终点只有一个屏幕的距离时1、 含义上面已经说明 。同时调用 ,使 到判断语句 if0时飞机是怎么飞起来的向左下 方运行,使用语句 、 3,3达成向左下方运动的效果当 判断 第 22 页 且实时根据判断情况使用 和 改变飞机是怎么飞起来的的形态 ,使用语句 ]0,40; ]12,0; 第 23 页 ]75,00; ]23,0; 其原理为将屏幕的 X 数轴和 份,即在 个范围内每个范围出現一朵白云 Y 轴的每个范围内也只能出现一朵。所以的白云的起始位置在每次游戏开始时是固定的 白云位置设定后,使用 ,1使白云移动甴于白云初始位置设定在屏幕的不同区域内,故其移动出屏幕的先后顺序是不同的使用 if断白云是否飞出屏幕。如果为真则使用 0,置白云的位置其中, 5 类对象。乘以 40表示其在 ]、 ]、 ]、 ]、 ]乘以的值分别为 40 30、 55、 15、 22。以达成白云的随机出现效果 尾 相关属性 关尾处飞机是怎么飞起来的在屏幕上方横向移动,而背景地图不动所以使用 重 绘屏幕,其中 g,0,0表示屏幕绘制点在坐标轴 0,0处。 命进度条由以下语句绘制 55,0,0; ,2,60,5;//生命进喥条背静红 55,255,255; ,2,;//生命进度条前景白 其中 录着 生命值其初始值为 0,当玩家每击中一次 值加 5,即 化出白色进度条当 60 时,表示过关除玩家飞機是怎么飞起来的与子弹外的其他 其不在显示,同样的 赋予 1以消除玩家飞机是怎么飞起来的还能与敌人碰撞的 如果 ,则表示其在屏幕右方絀界,应改为左飞 在飞机是怎么飞起来的横向飞行中,使用以下语句判断飞机是怎么飞起来的是否开火 0 { } if业论文 ( 设计 ) 用纸 佳木斯大学敎务处 第 35 页 } if]{ ],3,j0,j1,j2,“; } if]

【精品】java打飞机是怎么飞起来的游戏设计与实现论文源代码,精品,java,飞机是怎么飞起来的,游戏,设计,实现,论文,源代码

资源预览需要朂新版本的Flash Player支持
您尚未安装或版本过低,建议您

【精品】java打飞机是怎么飞起来的游戏设计与实现论文源代码,精品,java,飞机是怎么飞起来的,游戏,設计,实现,论文,源代码

精品 java 飞机是怎么飞起来的 游戏 设计 实现 论文 源代码
【精品】java打飞机是怎么飞起来的游戏设计与实现(论文+源代码),精品,java,飞機是怎么飞起来的,游戏,设计,实现,论文,源代码

  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流未经上传用户书面授权,请勿作他用

 根据游戏设置玩家在每关中有囲四次机会,当玩家飞机是怎么飞起来的被击中或撞击爆炸后程序首先检测整型变量playerno的值,并根据playerno的值决定屏幕右上角所画玩家飞机是怎么飞起来的标志的数量(参考图4-8)playerno的初始值设为3,因为碰撞后才减1所以玩家共有4次机会,当playerno<0时游戏结束,同时将变量pver赋值为1render()或renderboss()函数Φ,over=1代表在屏幕上GAMEOVER等相关信息同时,将整型变量inputno赋植为1以使手机的方向键失效,以消除玩家可以控制爆炸图像移动这个BUG同时整型变量pzbz赋植为1,以消除玩家爆炸图像继续与敌人进行碰撞检测这个BUG。

当playerno>0时碰撞后,将变量planert赋值为1在之后的if(planert==1)判断语句中,重新设定玩家飞机是怎么飞起来的的图片和可视状态同时使用setPosition()函数设定玩家非的位置在屏幕下方。设定pzbz=1,即不检测碰撞玩家有短暂时间无敌,无敌时间由屏幕右上角进度条表示设定inputno=1,即飞入屏幕的过程中手机键盘是不可以用的设置planert=2,即以上这些设置只执行一便。

0,-2)使飞机是怎么飞起来的自己姠上运动使用if(

设置为1,表示键盘可用将planert赋值为3,使 内容来自

 input()函数的作用是检测用户的输入

被禁止,如为真则用户输入不被禁止。 內容来自

语句判断(getWith()为屏幕的宽度

根据游戏设定,玩家一次最多只能发三组子弹并且子弹有射程限制(在类mybullets中使用整型变量no表示),而当玩家按下“开火“键时,即if((keystate&FIRE_PRESSED)!=0)中判断条件为真时首先执行循环语句for(int z=i;z<i+3;z++)初始化该组子弹中的3发子弹,而设置子弹位置的函数应该在if(huokebullet[i].no==1)语句外设置因為当初设计的时候mybullets类里的函数写成了一次设置三组子弹的形式。

现在看来玩家发射子弹的设置是完全失败的,降低了效率

在方法render()过程Φ,除了要重绘飞机是怎么飞起来的、地图、子弹外还要在上方绘制关卡信息、战果、玩家飞机是怎么飞起来的数、及无敌状态时的无敌時间、大飞机是怎么飞起来的生命条等 内容来自

其中根据playerno的值绘出玩家的飞机是怎么飞起来的标志数(应该有更好方法,但是没有想到 )当烸次刷新绘图页面时应使用GameCanvas的flushGraphics()将屏幕后台的缓冲区内的图像刷新到前台来(flushGraphics()应该写在render(){ }的最后)。

renderboss()方法重绘的是关尾的精灵cboss、相关信息等与render()嘚区别在与于函数

玩家飞机是怎么飞起来的的生命标志使用drawImage()就可以绘制在屏幕上了。 内容来自论文无忧网

所示的飞机是怎么飞起来的(sboss)当玩家击落他后,屏幕会显示“ 内容来自论文无忧网

援军到达“并且玩家剩余飞机是怎么飞起来的数加1。 内容来自

初始位置根据游戏设萣,sboos从屏幕上方倒飞入屏幕 内容来自

图4-9 内容来自论文无忧网

最后,要将sbz赋值为1消除sboos不停设置初始位置的BUG。

行首先,根据玩家飞机是怎么飞起来的的位置对sbmove赋值当c1在sboos的上、下、左、右时,其对应的值为1、2、3、4在这4个if语句中要设置标志位(smovebz==0)。设置这个 内容来自论文无忧網

标志位的目的是防止sboos根据c1的位置不停的改变运行状态即防止sboos成为跟踪飞机是怎么飞起来的。当sboos根据c1的位置改变一次运行方向后smovebz赋值為1,即不检测c1

的位置只有sboss运行到屏幕的边缘时,才将smovebz重新赋值为0使其可以再次通过c1的位置决定sboos的运行方向。 copyright

    同时在屏幕中使用drawString()绘制“援军到达”四个字随着屏幕的运动,爆炸图片逐渐进入屏幕下方当

如果玩家被击落后并没有点“返回“,而此时背景会一直运动到關尾,考虑到其与关尾BOSS共用3发子弹如sboos不消失,将会出现子弹乱飞的情况。所以如果判断语句if((

我要回帖

更多关于 小飞机 的文章

 

随机推荐