Line(x0, y0, x, y); // минутная стрелка sleep(1000);
until (min>=60) or keyPressed;
end.
Теперь разберемся как она работает.
Во-первых программа использует два модуля: модуль CRT - для запуска программы в отдельном окне. Во-вторых модуль GraphABC - для того, чтобы можно было вырисовывать минутную и секундную стрелки.
Загрузка изображения часов осуществляется в два этапа: сначала с файлом изображения связывается идентификатор изображения (в нашем случае это pic). Это делается следующим оператором: pic:=LoadPicture('timer.jpg');
Далее уже в цикле происходит прорисовка изображения : DrawPicture(pic,0,0,360,480);
Оператор HideCursor; "прячет" курсор, который всегда "моргает" в левом верхнем углу окна.
Оператор x0:=173; y0:=300; min:=0; sec:=0; устанавливает центр циферблата - точку, откуда будут рисоваться стрелки, а ткже устанавливает начальное значение минут и секунд в ноль.
Работа цикла с постусловием.
Циклrepeat......until (min>=60) or keyPressed; работает пока количество минут не превысит 60 или не будет нажата какая-либо из клавиш клавиатуры.
7. Прорисовка линии минутной стрелки: SetPenWidth(7); Line(x0, y0, x, y);
8. Задержка работы программы на 1 секунду: sleep(1000);
Небольшой видеофрагмент поможет еще досканельнее разобраться в работе программы:
Видеоурок:
Как добавить часовую стрелку в часы?
1. В области описания переменных добавить еще одну, отвечающую за количество часов, например hour.
2. После расчета количества минут добавить строку для расчета количества часов на основе количества минут:
hour:= min div 12; (здесь делим нацело уже не на 60, а на 12, т.к. часовая стрелка за один полный оборот минутной стрелки должна сместиться не на одно, а на 5 делений);
3. Далее необходимо по аналогии с секундной и минутной стрелками сделать перерасчет количества часов в координаты конца стрелки x и y. В этом же блоке необходимо учесть, что часовая стрелка должна быть еще короче минутной: