Здравствуйте, гость ( Вход | Регистрация )

> Задать таймер на выполнение строки кода
CKA3KA
сообщение 13.12.2018, 7:56
Сообщение #1


**

Neophyte
Сообщений: 28
Регистрация: 17.11.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.119
Возраст: 33



(IMG:style_emoticons/default/smile.gif)
Требуется в начале кода перед первой :меткой задать таймер к примеру 30мин. на переход к определенной :метке,
по истечении этого времени независимо от выполняемой строки кода должен произойти переход на заданную в таймере метку.
Как сделать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
sutra
сообщение 13.12.2018, 14:40
Сообщение #2


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Код
 set timer4   // сброс контрольного таймера (4 чисто для примера, если остальные заняты)
while 1=1    // вечный глобальный цикл
  // действие 2
    set #usl1          // Сброс признака выполнения блока 1
    set #usl2          // Сброс признака выполнения блока 2
    set #usl3          // Сброс признака выполнения блока 3
    if timer4 > 30000  // если контрольное время (30 сек.) истекло
      set timer4       // сброс таймера контроля (уже для следующего контроля)
      set #usl2 1    // будет выполняться блок 2 (чисто для примера)
    else               // иначе выполнить стандартный анализ
      if ...
        set #usl1 1    // будет выполняться блок 1
      end_if
      if ...
        set #usl2 1    // будет выполняться блок 2
      end_if
      if ...
        set #usl3 1    // будет выполняться блок 3
      end_if
    end_if
  // завершение действия 2

  // условный блок 1
  if #usl1 = 1   // если обнаружен признак выполнения блока 1
    ...
    continue  // ДАЛЕЕ НИЧЕГО ВЫПОЛНЯТЬСЯ НЕ БУДЕТ
              // а произойдёт переход на начало цикла
              // по сути как goto
  end_if
  // и так далее с остальными блоками
  ...

end_while


Если внутри условного блока выполняются другие циклы любого типа, то нужно следить за уровнем continue. Т.е. если проверка прерывания сработала например внутри for, то нужно задать переход на следующий шаг глобального цикла так: continue 2, иначе прервётся цикл for.

Попытался объяснить как можно проще, по крайней мере Дарка не будет раздражать goto. Хотя в lua нашей версии continue тоже нет, так что если планируете переход на lua, то лучше подумать над другой архитектурой кода. Пример чисто для понимания процесса.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
CKA3KA   Задать таймер на выполнение строки кода   13.12.2018, 7:56
DarkMaster   Для начала прекратить использовать метки. В целом ...   13.12.2018, 8:36
CKA3KA   Для начала прекратить использовать метки. В целом...   13.12.2018, 9:26
DarkMaster   http://hosting.vspu.ac.ru/~chul/dijkstra/goto/goto...   13.12.2018, 9:49
CKA3KA   ОК :) Благодарю за разъяснение.   13.12.2018, 11:30
DarkMaster   Согласно поставленным изначально условиям - работ...   13.12.2018, 14:53
sutra   Блин, ну если сам себе злобный Буратино, то лучше...   13.12.2018, 16:31
sutra   Таких операторов вообще быть не должно. В моих ко...   13.12.2018, 16:59
DarkMaster   Там есть вранье. При включенном гипертрейдинге ди...   13.12.2018, 23:05
sutra   Не думаю, точнее уверен, что отрисовка картинки п...   14.12.2018, 1:24
sutra   Кстати, пусть я не во многие игры играл, но всё-та...   14.12.2018, 1:58
DarkMaster   Я тебе свою практику говорю. Попробуй скил поспам...   14.12.2018, 2:21
sutra   Я не отрицаю, всегда найдётся кривизна. У меня эт...   14.12.2018, 2:28


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 18.9.2025, 23:05
Designed by Nickostyle