切换变量但输入是连续的算法

  • 本文关键字:连续 算法 变量 c++ xbox
  • 更新时间 :
  • 英文 :


我正在制作一个从xbox控制器读取输入的程序,代码中有一些布尔变量需要切换。我的函数有这个模板。

void toggle(bool condition, bool &variable) // Used to toggle variables
{
}

条件参数将是控制器上的一个按钮(例如按钮a(,变量参数是需要切换的变量的参考(例如蹲下(

问题是,由于控制器输入是不断读取的,玩家无法快速按下和释放按钮,以至于不会读取多次,这导致我试图切换的变量只能快速来回切换。我想要的行为是,当按下A时,crouching的值会变为与它相反的值(crouching=!crouching(,但我只希望在按下按钮时运行一次,并等待它释放,然后才能再次调用函数。我试过了,但我想不出一个算法来做到这一点。感谢您的帮助!

这是RAW输入的常见问题。这就是为什么OS提供了各种类型的事件及其处理程序。这里的例子是WM_KEYDOWN
如果原始输入是唯一的选项,则可以使用中间过滤器,其结果可用于实际切换您的情况下的变量。

例如,如果r,P表示按钮的释放和按下状态,那么像rrrrrrrrrr PPPPrrrrrrRRrrrrrPrrrrrrrr这样的序列意味着当r -> P转换发生时,您需要切换它。也许你可以有一个小到2个元素的数组,你可以这样做sample[1]=sample[0];sample[0]=control.state;如果(sample[0]='r'&sample[1]='P'(,则toogle(变量(

此外,您可以尝试使用更大的阵列来避免任何杂散噪声,基本上采用基于最小人工按键持续时间和取消采样率的阈值。

最新更新