如果说变量x已经< 0.1秒x秒然后做点什么?

时间:2018-03-13 22:10:04

标签: c++ directx

试着查看这个,但这是一个难以搜索的问题。

因此,如果说球位于1或更低的y位置至少3秒钟,那么就做一些事情。我假设一个计时器,但不知道如何设置它。 TA

1 个答案:

答案 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秒的历史记录,这意味着在分配新值时,您可以通过丢弃过时的历史记录开始。