网页功能: 加入收藏 设为首页 网站搜索  
格斗类游戏的键盘处理
发表日期:2006-08-23作者:[转贴] 出处:  

 格斗类游戏对于键盘的要求极高,因此,键盘处理就成了格斗类游戏的一个极其重要的部分,现在就让我们谈谈电脑上格斗类游戏键盘处理的实现。
  在电脑上使用格斗游戏不同于家用机和街机,家用机和街机使用的是操作手柄,操作手柄的按键使用的是电压叠加的原理,因此可以支持多个按键同时按下。而电脑上却不同,电脑上使用的是键盘,键盘采用的扫描码的形式,如果不使用组合键(Ctrl、Alt和Shift这些),那么如果同时按下键盘的AB两键,得到的值有两种情况:AB或BA。而且,如果先按下A键不放,再按下B键不放,得到的将是ABBBBB...的序列而不是需要的ABABAB...的序列。再有一种,加速的按键,如果连按两下A,再按住A不放,人物将由走的状态变为跑的状态。还有,电脑上的键盘有缓冲区。如果缓冲区已满,将无法接受到任何按键。
  说了这么一大堆问题,也该到解决问题的时候了。先解决多键同时按下的问题,按键最多只有两键同时按下吧(比如按上+前+手,向前跳)。那么我们就将键盘缓冲区设置为两个单元,每一次从键盘缓冲区取两个值,再清空缓冲区,准备下一轮读取。如果从键盘缓冲区中取一次就空了,那么该次取值结束。可以用下图表示:



比如规定按住上+左为相左上运动,那么用bioskey读取的值如果为0x4800(上的扫描码)、0x4b00(左的扫描码)或0x4b00、0x4800则执行主角向左上跳跃的动作序列。
  读取的方式有了,接下来就要对输入的键进行处理了。在进行键的处理时,需要涉及时间和状态两个机制。时间机制限定在规定的时间内如果输入了一组动作(如发冲击波:下、前、手),满足必杀技则执行相应的必杀技。如果其中有某两个动作相隔时间超过了某个指定的值,则认为该动作不符合必杀技要求,变为普通动作(如发冲击波的动作可能变为:下蹲,击拳)。现在就让我们构造一个判断必杀技的图表演示:

(设定必杀技间隔时间为0.3秒,即超时意味着每隔0.3秒检查一下输入,如果下一个键隔当前键的时间超过了0.3秒说明超时,而且还要建立一个存储动作序列的栈。)


该图表只是键盘控制的一个简单骨架,里面还没有涉及到更深层次的问题。但已经可以解决大部分问题了,就到此为止吧。

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 格斗类游戏的键盘处理
本类热点文章
  DirectInput里的键盘鼠标的应用
  一个中文输入的类
  掌握DirectX和DirectInput力反馈游戏杆
  格斗类游戏的键盘处理
  游戏鼠标操作的思考
  DX下VC6.0中文輸入問題
  使用系统输入法
  DirectInput 键盘编程入门
  DirectX下软件鼠标的实现
  DirectDraw 与 DirectInput 的游戏编程..
  DirectInput 鼠标编程入门
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00388