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