조합은 일련의 주요 이벤트입니다. 따라서 어떤 종류의 포인터/반복자를 시퀀스의 현재 이벤트에 넣을 수 있습니다. 그리고 나서 창에서 새로운 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'
}
}
}
이 방법 : 여기
은 좀 더 명확하게 수있는 몇 가지 의사 코드입니다.
키가 언제 상태를 변경하고 키 다운 이벤트를 저장하는지 추적하십시오. – molbdnilo