Gremlin92
@Gremlin92
Ленивый и безъинициативный

Как заставить код выполниться лишь раз в почти бесконечном цикле?

Вот такой код
bool flag = true;
void Render()
{
    while(not_exit)
    {
        do_something();
        keyboard();
        if(flag)
            do_one_time();
    }
}
void do_one_time()
{
    ...
    flag = false;
}
void keyboard()
{
    if(key == f1)
        flag = true;
    if(key==f2)
    {
        ...
    }
    ...
}
void main()
{
    Init();
    Render();
    Release();
}

Нужно выполнить do_one_time лишь раз, конечно для этого можно завести глобальную переменную flag и в конце этой функции поменять его на false, но в функции keyboard идет проверка нажатия на клавиши f1 и флаг flag станет снова true, но в этом случае функция опять будет вызвана, а мне нужно ее вызвать в конце выполнения нажатия на другую клавишу f2, как быть?
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
@majstar_Zubr
C++ & gamedev
void do_one_time() {
     static bool was_called;
     if (!was_called) {
          // ... полезный код
     }
     was_called = true;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы