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, как быть?
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 1
@majstar_Zubr
C++, C#, gamedev
void do_one_time() {
     static bool was_called;
     if (!was_called) {
          // ... полезный код
     }
     was_called = true;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект