格斗类游戏的键盘处理
来源:互联网 发布:单片机简易秒表设计 编辑:程序博客网 时间:2024/05/17 07:29
格斗类游戏对于键盘的要求极高,因此,键盘处理就成了格斗类游戏的一个极其重要的部分,现在就让我们谈谈电脑上格斗类游戏键盘处理的实现。
在电脑上使用格斗游戏不同于家用机和街机,家用机和街机使用的是操作手柄,操作手柄的按键使用的是电压叠加的原理,因此可以支持多个按键同时按下。而电脑上却不同,电脑上使用的是键盘,键盘采用的扫描码的形式,如果不使用组合键(Ctrl、Alt和Shift这些),那么如果同时按下键盘的AB两键,得到的值有两种情况:AB或BA。而且,如果先按下A键不放,再按下B键不放,得到的将是ABBBBB...的序列而不是需要的ABABAB...的序列。再有一种,加速的按键,如果连按两下A,再按住A不放,人物将由走的状态变为跑的状态。还有,电脑上的键盘有缓冲区。如果缓冲区已满,将无法接受到任何按键。
说了这么一大堆问题,也该到解决问题的时候了。先解决多键同时按下的问题,按键最多只有两键同时按下吧(比如按上+前+手,向前跳)。那么我们就将键盘缓冲区设置为两个单元,每一次从键盘缓冲区取两个值,再清空缓冲区,准备下一轮读取。如果从键盘缓冲区中取一次就空了,那么该次取值结束。可以用下图表示:
比如规定按住上+左为相左上运动,那么用bioskey读取的值如果为0x4800(上的扫描码)、0x4b00(左的扫描码)或0x4b00、0x4800则执行主角向左上跳跃的动作序列。
读取的方式有了,接下来就要对输入的键进行处理了。在进行键的处理时,需要涉及时间和状态两个机制。时间机制限定在规定的时间内如果输入了一组动作(如发冲击波:下、前、手),满足必杀技则执行相应的必杀技。如果其中有某两个动作相隔时间超过了某个指定的值,则认为该动作不符合必杀技要求,变为普通动作(如发冲击波的动作可能变为:下蹲,击拳)。现在就让我们构造一个判断必杀技的图表演示:
(设定必杀技间隔时间为0.3秒,即超时意味着每隔0.3秒检查一下输入,如果下一个键隔当前键的时间超过了0.3秒说明超时,而且还要建立一个存储动作序列的栈。)
该图表只是键盘控制的一个简单骨架,里面还没有涉及到更深层次的问题。但已经可以解决大部分问题了,就到此为止吧。
在电脑上使用格斗游戏不同于家用机和街机,家用机和街机使用的是操作手柄,操作手柄的按键使用的是电压叠加的原理,因此可以支持多个按键同时按下。而电脑上却不同,电脑上使用的是键盘,键盘采用的扫描码的形式,如果不使用组合键(Ctrl、Alt和Shift这些),那么如果同时按下键盘的AB两键,得到的值有两种情况:AB或BA。而且,如果先按下A键不放,再按下B键不放,得到的将是ABBBBB...的序列而不是需要的ABABAB...的序列。再有一种,加速的按键,如果连按两下A,再按住A不放,人物将由走的状态变为跑的状态。还有,电脑上的键盘有缓冲区。如果缓冲区已满,将无法接受到任何按键。
说了这么一大堆问题,也该到解决问题的时候了。先解决多键同时按下的问题,按键最多只有两键同时按下吧(比如按上+前+手,向前跳)。那么我们就将键盘缓冲区设置为两个单元,每一次从键盘缓冲区取两个值,再清空缓冲区,准备下一轮读取。如果从键盘缓冲区中取一次就空了,那么该次取值结束。可以用下图表示:
比如规定按住上+左为相左上运动,那么用bioskey读取的值如果为0x4800(上的扫描码)、0x4b00(左的扫描码)或0x4b00、0x4800则执行主角向左上跳跃的动作序列。
读取的方式有了,接下来就要对输入的键进行处理了。在进行键的处理时,需要涉及时间和状态两个机制。时间机制限定在规定的时间内如果输入了一组动作(如发冲击波:下、前、手),满足必杀技则执行相应的必杀技。如果其中有某两个动作相隔时间超过了某个指定的值,则认为该动作不符合必杀技要求,变为普通动作(如发冲击波的动作可能变为:下蹲,击拳)。现在就让我们构造一个判断必杀技的图表演示:
(设定必杀技间隔时间为0.3秒,即超时意味着每隔0.3秒检查一下输入,如果下一个键隔当前键的时间超过了0.3秒说明超时,而且还要建立一个存储动作序列的栈。)
该图表只是键盘控制的一个简单骨架,里面还没有涉及到更深层次的问题。但已经可以解决大部分问题了,就到此为止吧。
- 格斗类游戏的键盘处理
- cocos2dx3.x《格斗》类游戏加载界面(一)
- Cocos2d-X 3.4版-游戏继续,游戏重新开始,回到主界面的实现《赵云要格斗》
- 格斗技巧的探讨
- 用pygame写游戏 处理键盘事件
- Cocos2d-x游戏暂停、继续游戏、重新开始界面的实现---之游戏开发《赵云要格斗》(10)
- 键盘消息的处理
- 键盘的相关处理
- 键盘隐藏的处理
- Cocos2d-x自定义按钮类控制精灵攻击----之游戏开发《赵云要格斗》(2)
- cocos2dx3.x《格斗》类游戏实现人物选择界面(二)
- 本周游戏一点想法:模拟真实格斗
- 曾经做的格斗编辑器
- 键盘游戏
- Android的键盘事件处理
- Android的键盘事件处理
- 键盘中断的处理过程
- iOS7 Xcode5 键盘的处理
- Jsp连接mySQL、Oracle、SQL Server数据库备忘
- Jsp,JavaBean,Mysql的连接方法
- 使用mysqldump进行Mysql 备份
- Mysql日期和时间函数大全
- 当MySQL集群时, JDBC路径的使用方法
- 格斗类游戏的键盘处理
- MySQL 性能优化
- 一个关于equals()方法
- Mysql错误代码
- Oracle基础概念
- ffmpeg命令
- ffmpeg功能
- 怎样找出精灵的边缘
- 经典MySQL语句收藏(高手必备)