gpt4 book ai didi

c++ - 如何识别输入组合?

转载 作者:太空宇宙 更新时间:2023-11-04 13:46:29 25 4
gpt4 key购买 nike

我正在尝试为我的视频游戏创建一个功能,让我能够识别某些输入组合,例如街头霸王(或其他格斗游戏)的组合(向下、向下+向右、向右 + 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++ - 如何识别输入组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25668932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com