试着查看这个,但这是一个难以搜索的问题。
因此,如果说球位于1或更低的y位置至少3秒钟,那么就做一些事情。我假设一个计时器,但不知道如何设置它。 TA
答案 0 :(得分:1)
这需要x
的自定义类型。行业级解决方案将使用模板而不是硬编码双重,但我在这里保持简单。
你的课程看起来像这样:
class timedVariable {
double value; // <double> would be replaced by template parameter
std::chrono::steady_clock::timepoint lastChange;
public:
timedVariable(double v)
: value(v)
, lastChange(std::chrono::steady_clock::now())
{ }
timedVariable(timedVariable const&) = default;
timedVariable& operator=(timedVariable const&) = default;
bool equalSince(double v, std::chrono::steady_clock::timepoint t)
{
// Ignoring the problem of double equality
return this->value == v && lastChange < t;
}
};
&#34;在Y秒内小于X的轻微问题&#34;是你需要一个相当完整的历史值的历史。例如,如果您在过去的时间点0,1和2中有值0.1, 0.3, 0.2
,并且您在时刻3检查,那么它已经<= 0.3永远,但是&lt; = 0.2一秒钟。并且您需要##大于X的反向历史记录为Y秒&#34;。
如果您可以预先设定历史记录长度,那么这不是问题。您可能知道最多只需要3秒的历史记录,这意味着在分配新值时,您可以通过丢弃过时的历史记录开始。