为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

游戏辅助控制

2019-02-27 5页 doc 16KB 58阅读

用户头像

is_650122

暂无简介

举报
游戏辅助控制控制游戏角色移动到想要某地准备打怪练级.那么我们想象一下作为人类该怎样一步步的操作呢? 首先通过大脑里预先设定好满足战斗的条件. 如背包未满.装备持久正常.携带药品足够.等等.再用眼睛检查角色各项是否满足其条件.如满足则查找当前画面是否有可攻击的怪物. 如果有则选择.并攻击.怪物死亡后.检查地面是否有掉落物品.如有则拾取.然后重复之前的动作.了解了这些情况后.如何编程来实现呢? 传统的编程实现方式既是遵循事先设定的逻辑.从头到尾顺序的执行.其缺点是过于死板.程序一经写成.很难对其进行扩展. 程序规模和代码逻辑成正比....
游戏辅助控制
控制游戏角色移动到想要某地准备打怪练级.那么我们想象一下作为人类该怎样一步步的操作呢? 首先通过大脑里预先设定好满足战斗的条件. 如背包未满.装备持久正常.携带药品足够.等等.再用眼睛检查角色各项是否满足其条件.如满足则查找当前画面是否有可攻击的怪物. 如果有则选择.并攻击.怪物死亡后.检查地面是否有掉落物品.如有则拾取.然后重复之前的动作.了解了这些情况后.如何编程来实现呢? 传统的编程实现方式既是遵循事先设定的逻辑.从头到尾顺序的执行.其缺点是过于死板.程序一经写成.很难对其进行扩展. 程序规模和代码逻辑成正比.不易于维护.相较下.状态机编程思想成为更佳的解决.下面将通过C语言语法的伪代码来讲解其原理和实现. 状态机的4个要素:现态.条件.动作.次态 1.现态:是指游戏角色当前所处的状态. 2.条件:当一个条件被满足.将会触发一个动作.或者执行一次状态的迁移. 3.动作.条件满足后执行的工作 4.次态:条件满足后要迁往的新状态. 综上所述.一个状态机可以通过2个函数来完成.第一个函数获取现态.再通过条件返回需要执行的动作.第二个函数.实现动作的集合.并修改次态. 函数一: unsigned int GetAction() // 函数功能:获取状态并根据预先定义的条件来返回需要执行的动作码. { 第一步获取状态: 因为当今的MMORPG类游戏.都有各自简单的人工智能成分.所以在其设计时.游戏角色结构中必有一个域.来表示角色当前状态.这正是我们需要的.大前提所在.当然此域需要我们通过逆向分析取得. 如:1=静止2=休息3=移动4=战斗5=受到攻击 第二步对每种状态的各种条件进行判断.并返回结果. switch (游戏角色状态) { case 1:当人物状态为静止时.检测是否符合挂机条件.再检测是否选择了怪物.如果所有条件不成立则返回攻击动作码 { 检查条件.通过先后逻辑来控制优先级 if (满足回程补给条件==是) 返回结果1 else if (角色选中状态==空) 返回结果2 else 返回结果3 } case 2:当人物状态为休息时.大家知道游戏设计如果角色一段时间没有动作.就会原地休息.因为程序一旦执行.如果返回这个状态就说明程序或者角色出现异常.那我们只能做些停止之类的动作 { 返回结果4 } case 3:当人物状态为移动时.判断条件是否到达目的地 { if (到达目的地==假) 返回结果5 } case 4:当人物状态为战斗时.判断攻击目标是否死亡 { if (判断目标死亡==是) 返回结果6 else 返回结果3 } case 5:当人物状态为受到攻击时. { 返回结果3 } default: { 如果状态未定义.可输出调试信息. } } Function End } 函数二: unsigned int Process() // 函数功能:动作合集,因为我们的状态是游戏客户端控制的.所以不需要我们来调整次态 { while (1) 可以开条子线程写一个死循环检查状态返回的动作码. 如不喜可使用时钟,或其他 { switch (GetAction() ) { case 1:执行回程补给动作 case 2:执行选怪动作 case 3:执行攻击动作 case 4:执行关机动作 case 5:执行寻路动作 case 6:执行拾取动作 default:输出调试信息 } Loop End } Function End } 以上函数只为说明思路.其条件设定和逻辑必定不够严谨.请观者不必执着于此.其状态机的优点就是相对灵活.可轻松扩展.并使逻辑清晰.并简单化. 希望各位还不懂此思想的同学.看完此文.能理解其原理后举一反三写出自己完美的状态机
/
本文档为【游戏辅助控制】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索