- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
游戏界面和相关图片素材 6.2.3 飞机和子弹的实现 游戏中使用到的飞机、子弹均采用对应的类实现。因为子弹的数量会有很多,敌机的数量也会很多,所以每一颗子弹须要用一个对象来记录这当前子弹在屏幕中的绘制区域的X,Y坐标。每一架敌机也是一个对象,也记录着它在屏幕中的绘制区域的X,Y坐标。这样在处理碰撞的时候其实就是每一颗子弹的矩形区域 与每一架敌机的矩形区域的碰撞。通过遍历子弹对象与敌机对象就可以计算出碰撞的结果,从而拿到碰撞的敌机对象播放死亡爆炸动画。 如果按照这样的思路将会频繁的创建子弹对象与敌机对象这样会造成内存泄漏等严重的问题。仔细想一下屏幕中须要绘制的子弹数量与敌机数量肯定是有限的,我们可以初始化固定数量的子弹对象与敌机对象,只对这些对象进行更新逻辑与绘制。 举个例子,当前游戏屏幕中最多须要5架敌机,代码中就只产生5个敌机对象,分别检测这些对象,如果被子弹打中或者向下超过屏幕底边,这时候可以对这个对象进行属性的重置,让这架飞机从新出现在上方的战场上,这样就实现在不增加飞机对象的情况下让玩家感觉有打不完的飞机,子弹对象同理。 游戏开始时将所有飞机、子弹对象全部初始化,也就是说游戏中不会在分配新对象内存。 游戏过程中,不断更新游戏背景图片位置,下移10个像素,实现向下滚动效果。更新子弹位置,每次15个像素。更新敌机位置(每次5个像素),敌机死亡且爆炸动画结束或者敌机超过屏幕还未死亡重置敌机坐标位置。同时每隔500毫秒添加一发子弹并初始化其位置坐标在玩家飞机前方(注意15个子弹对象虽然已经存在,但是被初始化在屏幕外不能显示出来)。最后调用Collision()检测子弹与敌机的碰撞。 Java游戏编程原理与实践教程 主编 陈锐 夏敏捷 人民邮电出版社 《雷电》游戏因为操作简单,节奏明快,因此,作为纵轴射击的经典之作,《雷电》系列受到了广大玩家的欢迎,可以说是老少咸宜的游戏了。 本章开发模拟雷电的飞机射击游戏, 下方是玩家的飞机,能自动不断地发射子弹,上方是随机出现的敌方飞机(数量不超过5架)。玩家可以通过键盘的方向键控制自己飞机的移动,当玩家飞机的子弹碰到敌方飞机时,敌方飞机出现爆炸效果。运行效果如图6-1所示。 第6章 雷电飞机射击游戏 6.2.2 地图滚动的原理实现 举个简单的例子吧,大家都坐过火车吧,坐火车的时候都遇到过自己的火车明明是停止的,但是旁边铁轨的火车在向后行驶,会有一种错觉感觉自己的火车是在向前行驶。飞行射击类游戏的地图原理和这个完全一样。玩家在控制飞机在屏幕中飞行的位置,背景图片一直向后滚动从而给玩家一种错觉自己控制的飞机在向前飞行,如下图6-3所示两张地图图片(map_0.png,map_1.png)在屏幕背后交替滚动,这样就会给玩家产生向前移动的错觉。 6.3 关键技术 6.3.1 多线程 多线程编程可以使程序具有两条或两条以上的并发执行任务,就像日常工作中由多人同时合作完成一个任务。这在很多情况下可以改善程序的响应性能,提高资源的利用效率,在多核CPU年代,这显得尤为重要。 6.3.2 Java的Thread类和Runnable接口 Java中编程实现多线程应用有两种途径:一种是创建用户自己的Thread线程子类,一种是在用户自己的类中实现Runnable接口。 1. Thread Thread类是一个具体的类,该类封装了线程的属性和行为。 2. Runnable接口 Runnable接口只有一个方法run(),所有实现Runnable接口的用户类都必须具体实现这个run()方法,为它书写方法体并定义具体操作。当线程转入运行状态时,它所执行的就是run()方法中规定的操作。 6.4 雷电飞机游戏设计的步骤 6.4.1 设计子弹类(Bullet.java) 子弹类构造方法中,加载子弹的4帧状态图片(图6-5所示),在绘制子弹时,根据mPlayID绘制相应状态的图片。 6.4 雷电飞机游戏设计的步骤 6.4.2 设计敌机类(Enemy.java) 在项目中创建一个的Enemy类,用于表示敌机,实现子弹坐标更新,绘制功能。功能与子弹类相似。 敌机类构造方法中,加载敌机爆炸时的6帧状态图片,在绘制爆炸时,根据mPlayID绘制相应爆炸状态的图片(图6-6所示)。敌机本身为存活状态时仅一种状态图片,不需要切换。 图6-6 敌机爆炸时的6帧图片 6.4 雷电飞机游戏设计的步骤 6.4.3 设计游戏界面类(GamePanel.java) 在项目中创建一个继承JPanel的GamePanel类,用于实现游戏界面,完成子弹发射、敌机移动,碰撞检测等功能。 6.4.4 设计游戏窗口类(planeFrame.java) 在项目中创建一个继承JFrame的planeFrame类,
您可能关注的文档
- GS发动机简介.ppt
- halloween万圣节1031.ppt
- HC12(56)远程图站解决方案.ppt
- hear的用法演示文稿1.ppt
- helloC广告创意分析.ppt
- hq第一章第二章华侨大学机械设计学.ppt
- HTML与Javascript简单基础.ppt
- HSK4级词汇627-660.ppt
- H第三章数据库操作.ppt
- IBMWatchfire简介.ppt
- 2023年安徽省六安市寿县大顺镇招聘社区工作者真题含答案详解.docx
- 2023年安徽省六安市寿县涧沟镇招聘社区工作者真题及参考答案详解1套.docx
- 2023年安徽省六安市裕安区新安镇招聘社区工作者真题含答案详解.docx
- 2023年安徽省六安市寿县大顺镇招聘社区工作者真题及参考答案详解.docx
- 中国科学院生物物理研究所学术支撑部招聘笔试备考题库附答案详解.docx
- 中国地质调查局牡丹江自然资源综合调查中心2025年度公开招聘笔试模拟试题及完整答案详解1套.docx
- 2025年辽宁凌海市农村义务教育阶段学校教师特设岗位计划招聘127人笔试模拟试题及参考答案详解一套.docx
- 中国民航大学2024年博士专职辅导员第二批次及心理健康教育人员招聘笔试备考题库含答案详解.docx
- 2025年福建龙岩漳平市中小学新任教师招聘16人方案笔试模拟试题及参考答案详解.docx
- 广州市从化区卫生健康局所属事业单位2024年公开招聘事业编制工作人员笔试备考题库含答案详解.docx
最近下载
- 2025年国家能源集团神华工程技术有限公司社会招聘(100人)笔试模拟试题及答案解析.docx VIP
- 监理细则-(真空预压).doc VIP
- 2025至2030年中国交联pvc泡沫行业市场全景评估及投资前景展望报告.docx
- 山东临沂经济开发区城市建设投资有限公司招聘笔试题库2023.pdf VIP
- 家具史:法国洛可可家具.pptx VIP
- 首诊负责制试题及答案.pdf VIP
- 充泥管袋袋装碎石抛石等工程监理实施细则.doc VIP
- 2025年国家能源集团神华工程技术有限公司社会招聘(100人)笔试备考题库及答案解析.docx VIP
- 2024年全国中考语文试题汇编——议论文阅读及答案.docx VIP
- 2025国家能源集团神华工程技术有限公司社会招聘100人考试备考题库及答案解析.docx VIP
文档评论(0)