-1

我需要在特定持续时间/特定时间步之后执行特定代码。

例如,在 ROS 中,我们实现了 Service API,客户端可以在需要时调用服务请求。

因此,当客户端调用服务 API 时,应立即执行第一个代码块,然后在一定的持续时间/时间步之后执行第二个代码块(如 LED 闪烁)并重复循环,直到客户端发送停止请求。

现在我的问题是,我怎样才能实现这个循环?

uint m_tickCount{};
uint duration {500}; // timeStep /** tick */

void LedFlash(const Animation& animation, std::unordered_map<int, int> ledsHandle)
{
    //first block
    std::for_each(leds.begin(), leds.end(), [&](int value) {
        simSetShapeColor(ledsHandle[value], nullptr, sim_colorcomponent_ambient_diffuse,
                         colorValue.data());
    });
    //second block
    std::for_each(leds.begin(), leds.end(), [&](int value) {
        simSetShapeColor(ledsHandle[value], nullptr, sim_colorcomponent_ambient_diffuse,
                         colorValue.data());
    });
}

例如,一旦客户端调用服务,第一个代码块应该被执行,并且在指定的时间步之后应该执行第二个代码块,然后在指定的时间步之后再次执行第一个代码块并循环重复。

有什么提示或建议吗?

提前致谢

4

2 回答 2

1

您想首先明确定义所有变量,然后您可以执行两个 if 语句来确定 Sword_check 和/或 shield_check 虚拟变量是否应该等于 1。下面的代码应该可以帮助您入门。

#Define sword_charge and shield_energy 
sword_charge = 0.90
shield_energy = 5

#Set sword_check and shield_check as 0
sword_check = 0
shield_check = 0

if sword_charge >= 0.90:
    sword_check = True

if shield_energy >= 100: 
    shield_check = True

if sword_check and shield_check:
    print("The dragon crumples in a heap. You rescue the gorgeous princess!") 

else:
    print("Your attack has no effect, the dragon fries you to a crisp!")
于 2019-08-21T16:26:55.923 回答
1

是的,您可以编写这样的 if 语句。如评论中所述,错误来自您的错字。

于 2019-08-21T16:24:29.880 回答