如何识别输入组合
How to recognize input combination?
我正在尝试创建一个函数,让我能够识别一些输入组合,比如街头霸王(或其他格斗游戏)的组合(向下、向下+向右、向右+punch=hadoken),用于我的视频游戏
我的想法是将输入放入堆栈中,然后识别组合
问题是:
当游戏循环正在运行并且您只按下一个键一段时间时,游戏将识别您输入的X倍(X=您按下该键时经过的循环数)。我试着用计时器来限制输入的数量,但这似乎不是一个好的解决方案。
知道吗?
组合是一系列关键事件。因此,您可以为序列的当前事件提供某种指针/迭代器,然后当您从窗口中获得新的sf::Event
时,您可以更新指针/迭代器:如果它与下一个不匹配,则重置指针/迭迭代器;否则,则递增指针。如果到达序列的最后一个事件,则具有有效的组合。
以下是一些伪代码,可能会使其更加清晰:
class Combo
{
sequence events;
iterator it = events.begin();
bool handle(event e)
{
if (e == *it)
{
if (it == events.end())
{
it = events.begin();
return true;
}
else
{
++it;
return false;
}
}
else
{
it = events.begin();
return false;
}
}
}
void Manager::update(event e) // or whatever class you have
{
sequence combos = ...;
for (c : combos)
{
if (c.handle(e))
{
// perform combo 'c'
}
}
}
这样你就不需要任何定时器或堆栈了。
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 组合输入和输出流
- cvPreparePredictData中不支持的格式或格式组合(输入样本必须具有32fC1类型)
- Windows C - 需要想法 - 在同一应用/窗口中将鼠标输入和原始输入组合在一起
- 通过组合用户输入的前两个数组来制作第三个数组
- (Qt)可编辑的Q组合框:don't在输入文本时关闭弹出窗口
- 如何识别输入组合
- 如何将用户输入与if语句组合在一起
- 我如何组合这些字符串来输入到PlaySound方法
- 我是否需要为所有可能的输入参数组合提供构造函数?