Пример:
-- Из игры Language war.
-- Эта небольшая задача имитирует расходование запасов энергии
-- на корабле Euphoria и на его челноке.
-- Задача представляется "вечной" в бесконечном цикле,
-- но на самом деле это задача реального времени, которая вызывается
-- с периодом 1.7 - 1.8 секунды на протяжении всей игры.
-- Каждый раз при её вызове расходуется 3 или 13 единиц энергии.
global procedure task_life()
-- независимая задача: вычитание из запасов энергии
while TRUE do
if shuttle then
p_energy(-3)
else
p_energy(-13)
end if
task_yield()
end while
end procedure
См. также:
task_create, task_schedule, task_suspend task_suspend
text_color
Синтаксис:
include graphics.e
text_color(i)
Описание:
Устанавливает цвет символов текста. Увеличив i на 16, в некоторых графических режимах можно получить мерцающий текст заданного i цвета. См. в graphics.eсписок возможных цветов.
Комментарии:
Текст, который вы печатаете на экране после вызова text_color(), будет иметь заданный цвет.
Когда ваша программа завершается, последний цвет, выбранный вами для текста и выводившийся на экран, сохраняется в действии. Поэтому вам может понадобиться напечатать что-то, можно просто '\n', в белом цвете (WHITE), чтобы восстановить белый цвет текста операционной системы, особенно, если курсор находится в нижней строке экрана в готовности к прокрутке вверх.
Пример:
text_color(BRIGHT_BLUE)
См. также:
bk_color
text_rows
Платформа:
DOS32, WIN3 2
Синтаксис:
include graphics.e
i2 = text_rows(i1)
Описание:
Устанавливает число строк на экране в текстовом режиме, если заданное значение i1 возможно. i2 принимает значение действительного нового числа строк.
Комментарии:
Число строк 25, 28, 43 и 50 поддерживается большинством видеоплат.
См. также:
graphics_mode
tick_rate
Платформа:
DOS3 2
Синтаксис:
include machine.e
tick_rate(a)
Описание:
Задаёт число прерываний в секунду от таймера. Тем самым устанавливается точность библиотечной функции time() и частота дискретизации при профилировании времени.
Комментарии:
tick_rate() игнорируется под WIN32и Linux/FreeBSD. Дискретность счёта времени под WIN32 всегда равна 100 прерываниям в секунду.
На PC прерывания от таймера идут обычно с частотой 18.2 прерываний в секунду. tick_rate() позволяет вам увеличить эту частоту, но не уменьшить её.
tick_rate(0) восстановит нормальную частоту 18.2. Euphoria восстанавливает нормальную частоту автоматически при завершении вашей программы, даже при аварийной остановке по обнаруженной ошибке.
Когда программа исполняется в окне DOS с частотой таймера иной, чем 18.2, функция time() не будет убегать вперед, если данное окно не является активным окном.
С частотой таймера, отличающейся от 18.2, функция time() под DOS занимает примерно 1/100 от обычного времени её исполнения. Под Windows и FreeBSD функция time() всегда исполняется очень быстро.
До тех пор, пока ex.exeисполняется, система будет поддерживать правильное время дня. Но если произойдет отказ ex.exe(т.е. вы увидите сообщение об ошибке "CauseWay..."), когда частота таймера установлена высокая, вам (или вашему пользователю) может потребоваться перезапуск машины, чтобы восстановить правильную исходную частоту. Если не сделать этого, системное время будет быстро опережать реальное. Эта проблема не свойственна Windows 95/98/NTи имеет место только под DOSили Windows 3.1. Но вы всегда можете вернуться к правильному времени, поддерживаемому батарейными часами вашей машины, перезагрузив машину.
Пример:
tick_rate(100)
-- time() идёт с шагом .01 секунды
-- вместо обычных .055 секунды
См. также:
time, time profiling
time
Синтаксис:
a = time()
Описание:
Выдаёт число секунд, прошедших от некоторого фиксированного момента в прошлом.
Комментарии:
Если вам нужно измерить, например, сколько времени ушло на выполнение какого-то участка кода вашей программы, найдите разность между двумя отсчетами time(), взятыми в начале и в конце данного участка кода.
Разрешение под DOS32обычно около 0.05 секунды. Под WIN32и Linux/FreeBSDразрешение около 0.01 секунды.
Под DOS32вы можете улучшить разрешение, вызвав процедуру tick_rate() с необходимым параметром.
Под DOS32период времени, который вы можете так измерить, ограничен 24 часами. После этого величина, выдаваемая time() будет переустановлена и начнётся новый счёт. Если, тем не менее, вы вызывали tick_rate(), и частота часов была выше обычной 18.2/сек, результат time() будет оставаться правильным намного дольше, так как в этом случае Euphoria обрабатывает прерывания от часов прямо и накапливает отсчёты в более ёмкой переменной, 32-битной.
Читать дальше