150_______________________________________________
кратных попыток сотворения небольших функционально законченных частей программы и последующего их объединения. В этом процессе неизбежны поражения и победы незаметные стороннему наблюдателю. Эти победы порой увлекательнее побед в любой из компьютерных игр и полезнее, ибо служат не столько времяпровождению, сколько профессиональной подготовке, развитию ума и внимания.
4.7. УЧЕТ РЕАЛЬНОГО ВРЕМЕНИ. СЛУЧАЙНЫЕ ЧИСЛА
Рассмотренные в предыдущем занятии средства подсчета времени пригодны для программирования только таких игр, в которых необходимо учесть или показать время затраченное играющим на выполнение очередного хода или на решение задачи в целом. Для игр, в которых первоочередное значение отводится скорости реакции играющего на изменение ситуации, секундная задержка слишком велика.
Некоторые авторы рекомендуют использовать для создания меньших задержек по времени циклы по счетчику, но в этом случае задержка зависит от быстродействия компьютера (типа процессора и тактовой частоты), что неприемлемо. Во время работы компьютера один из счетчиков микросхемы пересчета тактовой частоты получает приращения с частотой 18.2 гц. Содержимое этого счетчика можно прочитать из области данных BIOS по адресу 0040:006Ch. Покажем каким образом можно использовать содержимое этого счетчика для согласования темпа работы программы с реальным масштабом времени (так называемая синхронизация с внешними событиями).
Нижеприведенная программа выводит изображения 12 меток, а затем циклически повторяет построение изображения циферблата и на его фоне изображение стрелки, позиция которой изменяется. Период повторения цикла обновления изображения должен быть независимым от быстродействия компьютера. С этой целью после построения изображения начинается цикл ожидания, время нахождения в котором должно равняться разности от заданного периода обновления изображения и времени фактически затраченного на это обновление. Для этого перед построением изображения запоминается значение счетчика времени в переменной START%. Затем проверяется приращение текущего значения счетчика DELTA% до тех пор, пока оно не превысит заданный порог равный периоду обновления изображения. В связи с ограниченной разрядностью считываемого значения счетчика отрицательное значение разности корректируется на число 256 (количество двоичных кодов в байте). SCREEN 12 'выбор графического режима CLS 'очистка экрана FOR I%=0 ТО 11 'начало цикла построения меток А! = .5236 * 1% 'угол направления на метку X = 63 * COS(А!) 'абсцисса вектора у = 63 * SIM(А!) 'ордината вектора LINE (320+Х,240+Y)-(320+(8*Х)/7,240+(8*Y)/7),2 'построение метки