FireURQ:Таймер через pause
Перейти к навигации
Перейти к поиску
Пример реализации таймера при помощи оператора pause.
:init ; локация инициализации perkill ; очищаем все переменные textalign = 3 ; выравниванием текст по центру timer = 9 ; устанавливаем таймер на 9 секунд year = "" ; задаём строковую переменную, в которой будет храниться введённая игроком информация
:go ; основная локация cls ; очищаем экран if go_1 <> 0 then year = year + "#go_1$" ; проверяем, если переданный в локацию параметр не равен 0, то «приписываем» его строковое значение переменной year if go_1 = 666 then year = "" ; если переданный параметр равен 666 (передаётся от кнопки «Очистить»), то очищаем переменную year pln Год рождения Александра Сергеевича Пушкина, быстро! ; печатаем задачу pln pln -#%year$- ; печатаем содержимое переменной year pln pln 00:0#timer$ ; печатаем содержимое переменной timer в виде «00:09» pln if #year$ = 4 and year <> "1799" then goto wrong ; проверяем равно ли количество цифр в переменной year четырём и не равно ли её содержимое правильному ответу, если условия истинны, переходим на локацию-обработчик неправильного ответа if year = "1799" then goto right ; проверяем равно ли содержимое переменной year правильному ответу, если равно, переходим на локацию-обработчик правильного ответа pln ; далее кнопки, ведущие на эту же локацию go и передающие параметры для занесения в переменную year btn go (1), 1 btn go (2), 2 btn go (4), 4 btn go (6), 6 btn go (7), 7 btn go (8), 8 btn go (9), 9 btn go (666), Очистить ; кнопка для очистки переменной year, см. выше pause 1000 ; пауза на одну секунду (собственно, самый главный оператор =) timer = timer - 1 ; после паузы таймер уменьшается на единицу if timer = 0 then goto timeout ; проверяем, не равен ли таймер нулю, если равен, переходим на соответствующую локацию-обработчик goto go ; зацикливаем весь процесс
:right ; локация-обработчик правильного ответа cls pln pln Всё правильно. pln А. С. Пушкин родился 6 июня (26 мая по старому стилю) 1799 года. end
:wrong ; локация-обработчик неправильного ответа cls pln pln #%year$? Неверно. pln Похоже, кто-то плохо учился в школе. pln btn init, Исправиться? end
:timeout ; если время вышло, осуществляется переход сюда cls pln pln Время вышло. btn init, Ещё раз? end