游戏的运的行机制.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
游戏的运的行机制

第4章 游戏的运行机制(1) ——用户事件处理 交互性—游戏的根本特性—让玩家掌控世界 如何交互? 命令输入方式:键盘、鼠标事件(单击,拖放等) 命令响应方式:事件处理程序更新游戏逻辑 1.改变游戏状态 游戏的有限状态机(FSM)模型 1 如何让游戏停止? ——跳出游戏循环while(true) 如何实现? a.设置一个布尔变量(running)作为游戏循环的条件,初值为true b.为程序添加键盘或鼠标事件监听 c. 添加相应的事件处理程序,如当键盘按下Esc键时将running值设置为false; 2 如何让游戏暂停和恢复运行? ——暂停和恢复游戏更新gameUpdate() 如何实现? a.设置一个布尔变量(isPaused)作为游戏更新的条件,初值为true b.为游戏更新设置条件 if(isPaused) {gameUpdate();} c. 添加相应的事件处理程序,如当键盘按下P键时将isPaused值设置为!isPaused; (参见例4_1) 2.传递控制命令 如何让玩家控制小球的运动方向? 设想:当玩家按下键盘的上下左右四键时让小球向相应的方向移动 实现:覆盖KeyPressed方法,同时在gameUpdate()中加入条件判断 (参见例4_2) 3.实例:贪食蛇游戏 1.如何表示贪食蛇 外观上如何表现? 一系列首尾相连的小球(用特定的颜色表示蛇头) 怎样实现蛇的移动? 在游戏的每一祯动态更新所有小球的坐标值,并进行绘制 用怎样的数据结构来存放和处理蛇的位置信息? 循环队列(数组实现) 定义两个变量head和tail,分别表示蛇头指针和蛇尾指针 用循环数组表示贪食蛇 那么,如何在游戏的每一祯中确定蛇头和蛇尾指针的数值? a.当蛇长达到最大值时(数组最大容量) 蛇头指针(head) 加一即可(对数组长度取模) 蛇尾指针(tail)永远在蛇头的前一个位置 b.当蛇长不足最大值时(难点) 蛇头指针仍然只需要加一 蛇尾指针值=(蛇头指针值+数组长度-蛇长+1)MOD 数组长度 (Why?看黑板) (测试:当按下I键时蛇身加长一个单位) 2 如何更新蛇的坐标? -只需要更新和保存蛇头的坐标值(why?) -当前祯的蛇头位置便是下一帧的蛇身位置 3 如何将蛇体绘制出来? a.如果tail值不等于head值,则在tail值对应的数组下标中读取坐标值,并在其位置绘制一个小球(蛇身),否则转步骤c, b.将tail值加一(需要对数组长度取模),转步骤a c. 绘制蛇头,在head值对应的数组下标中读取坐标值,并用特定的颜色来绘制一个小球(蛇头) (参见例4_3) 定义snake类 将贪食蛇的属性和方法进行封装 ——抽象(面向对象编程思想) 主要数据成员: public int x; public int y; public int diameter; private Point[] body; private int head; private int tail; private int length; 主要方法: update(); //移动蛇,更新其坐标 draw(); //绘制蛇,显示其形状 添加食物 添加Food类,并定义相关方法,用于在指定的位置绘制食物方块 数据成员: public Point location; public Point size; 方法: update();//更新食物坐标 draw(); //绘制食物图形 添加蛇与食物的交互 如何在屏幕区域随机添加一个食物? 借助Random对象 如何让蛇“吃”到食物? “吃的”过程:蛇头与食物重叠,食物消失,蛇身加长一个单位 如何实现? (参见例4_4) 类关系图 总结 1 通过对键盘和鼠标事件处理,我们可以: 转换游戏状态; 传递控制命令; 2 贪食蛇游戏设计要点: 蛇体的表示:循环队列 蛇体的运动:保存蛇头的坐标值,并动态调整蛇头及蛇尾指针 蛇与食物的交互:碰撞检测(下一讲内容) 继续改进 1.当窗口最小化或被遮挡时暂停游戏 2.添加游戏结束规则,并能重新开始游戏 3.能够添加多个食物,如当按下某个键后随机添加一个新食物(原来的食物不消失) 4.改变蛇的运动速度,按+号键加速,按-号键减速 5.手动控制蛇的移动,按下方向键时让蛇朝对应的方向移动,否则静止不动 6.自由发挥…… 内容提要 改变游戏状态 传递控制命令 实例:贪食蛇游戏 输入命令 游戏

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档