- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作业 使用自己的游戏资源(图片、声音)替代示例中的资源 第9章 完善游戏规则 在线教务辅导网: 教材其余课件及动画素材请查阅在线教务辅导网 QQ:349134187 或者直接输入下面地址: 问题 如何增添游戏的可玩性? 如何设计复杂的交互规则? 如何编写复杂的游戏逻辑? 1. 有限状态机编程 “有限状态机”是由有限的状态组成的一个机制。一个“状态”就是一个情况。比如门,它的“状态”有“开”或“关”以及“锁”与“未锁”。 四要素: 输入状态(当前状态) 输出状态(新状态) 状态转换条件(事件) 状态转换操作 (动作) 例:地铁出口的有限状态机 switch(state){ case locked: if(pass) alarm(); else if(coin) changeState(unlocked); break; case unlocked: if(coin) thanks(); else if(pass) changeState(locked); break; } 2. 实现复杂的游戏逻辑 为前几讲的游戏示例增加以下功能: 玩家跳起踩NPC 玩家发射子弹射击NPC 增加玩家的生命数 显示玩家生命及游戏分数 功能一:玩家跳起踩NPC 功能描述: 当玩家跳起下落时与NPC碰撞,则判定NPC死亡,并垂直掉落到屏幕下方。 NPC的有限状态机: 具体实现 活动状态下的动作: NPC执行move( )方法 活动态转换为掉落态: 条件:玩家与NPC碰撞;玩家的dy0 动作:执行changState(isHitted)方法 掉落态下的动作: dx=0; dy+=Gravity; locY+=dy; 掉落态转为消失态: 条件:locYGamePanel.Height 动作:changState(Dissmiss); 消失态下的动作: 执行setActive(false); (参见例9_1) 功能二:子弹射击NPC 功能描述: 当玩家按下Ctrl键时发射子弹,子弹水平方向直线运动,碰到NPC后消失 子弹的有限状态机: 具体实现 发射态下的动作: 当玩家按下Ctrl,生成新的子弹对象,并添加到Arraylist; 设置子弹的初始坐标: locX=Player.x; locY=Player.y; 移动态下的动作: dy=0;dx++; 注意:如何设置dx的方向? 移动态转换为消失态: 条件:子弹碰撞到NPC(碰撞检测时子弹坐标要转换为tiles地图坐标。why?) 动作:执行changeState(Dissmiss); (还要执行NPCchangeState(Dissmiss);) 消失态下的动作: 执行setActive(false); (参见例9_2) 功能三:增加玩家生命 功能描述: 设置玩家生命,当NPC攻击玩家后,玩家生命值减1,若生命为0则死亡,游戏结束;否则进入“无敌”状态 在“无敌”状态下玩家不会受到NPC攻击,且玩家的图像会不断闪烁;经过一段时间后玩家恢复到正常状态 玩家的有限状态机 具体实现 课堂讨论: 各个状态之下的动作是什么? 各个状态之间的转换条件是什么? 难点:无敌状态的表示 问题一:无敌状态下的动作有哪些? 问题二:如何设定无敌状态的时间? 问题二:无敌状态下如何显示闪烁效果? private int count = 0; …… public void update() { case unAttack: //无敌时间设为三秒 count = (count + 1) % (gamePanel.FPS * 3); if (count == 0) { changeState(Move);} } public void draw(Graphics g) { ……//每循环五帧闪烁一次 if (state == unAttack (count % 5 == 0)) { } else if …… } 功能四:显示生命和游戏分数 生命显示: 创建Life类,载入表示生命的图像文件 在GamePanel中创建Life对象,对象个数 等于玩家的生命值,并将其加入Arraylist 3.当玩家被攻击后更新Life对象列表 (参见updateHeart()方法) 分数显示: 设置一个变量表示游戏分数(
您可能关注的文档
- Internet核心原理与应用技术 作者 郭银章 第2章.ppt
- Internet核心原理与应用技术 作者 郭银章 第4章.ppt
- Internet核心原理与应用技术 作者 郭银章 第5章.ppt
- Internet核心原理与应用技术 作者 郭银章 第7章.ppt
- Internet核心原理与应用技术 作者 郭银章 第9章.ppt
- Internet核心原理与应用技术 作者 郭银章 第12章.ppt
- Internet核心原理与应用技术 作者 郭银章 第13章.ppt
- Internet核心原理与应用技术 作者 郭银章 第14章.ppt
- Internet核心原理与应用技术 作者 郭银章 第15章.ppt
- Internet核心原理与应用技术 作者 郭银章 第17章.ppt
- Java游戏程序设计教程 第2版 作者 何青 第10章 游戏关卡设计.ppt
- Java游戏程序设计教程 第2版 作者 何青 第12章 Greenfoot简介.ppt
- Java游戏程序设计教程 第2版 作者 何青 第13章 游戏设计案例详解.ppt
- Java语言程序设计 工业和信息化普通高等教育“十二五”规划教材 作者 相洁 呼克佑 第1章 概述.ppt
- Java语言程序设计 工业和信息化普通高等教育“十二五”规划教材 作者 相洁 呼克佑 第2章 Java程序开发运行环境.ppt
- Java语言程序设计 工业和信息化普通高等教育“十二五”规划教材 作者 相洁 呼克佑 第3章 Java语言基础.ppt
- Java语言程序设计 工业和信息化普通高等教育“十二五”规划教材 作者 相洁 呼克佑 第4章 数组与字符串.ppt
- Java语言程序设计 工业和信息化普通高等教育“十二五”规划教材 作者 相洁 呼克佑 第5章 java面向对象程序设计.ppt
- Java语言程序设计 工业和信息化普通高等教育“十二五”规划教材 作者 相洁 呼克佑 第6章 异常处理.ppt
- Java语言程序设计 工业和信息化普通高等教育“十二五”规划教材 作者 相洁 呼克佑 第7章 多线程编程.ppt
最近下载
- 2025年院感知识理论考试题库+答案.docx VIP
- 配合协调与服务承诺.docx VIP
- 14《称空气》课件 科学三年级上册(苏教版2025).pptx
- 晚期消化道肿瘤临床规范诊疗新进展题库答案-2025年华医网继续教育.docx VIP
- 工程协调配合措施及承诺.docx VIP
- 医院信息科笔试、面试题(附答案).docx VIP
- 施工协调配合的承诺与措施.pdf VIP
- 医院信息科计算机考试精彩试题(附答案).docx
- 2025年最新人教版七年级(初一)数学上册教学计划及进度表(新课标,新教材).docx
- 2025至2030地毯和室内装饰清洁服务行业项目调研及市场前景预测评估报告.docx
文档评论(0)