Аналоговые часы (для обычного Pascal ABC)
Формулировка задачи:
Здравствуйте. Создайте аналоговые часы показывающее текущее время.
Помогите подкрутить код.
Вот что имеется:
За стрелками остается след. Нужно убрать. Часовая стрелка не совсем верно работает, только переходит с одного часа на другой.
И не столь важно, но почему в цифровых часах глюк встречается. После 60 секунд идет не 1,2,3.. а 09,19,29,..99.. после нормальных 15 сек начинается нормальная последовательность 16,17..60.
Решение задачи: «Аналоговые часы (для обычного Pascal ABC)»
textual
Листинг программы
uses Crt, GraphABC, Utils; type DateTime = record Day, Month, Year, Hour, Minute, Second, Milliseconds: integer; end; var time: DateTime; x, x0, y, y0: integer; begin HideCursor; SetWindowSize(500, 500); x0 := 250; y0 := 250; LockDrawing; repeat ClearWindow; circle(250, 250, 170); SetFontColor(clblack); SetFontStyle(fsbold); TextOut(242, 90, '12'); TextOut(245, 390, '6'); TextOut(385, 240, '3'); TextOut(105, 240, '9'); time := CurrentDateTime; write('Âðåìÿ: ', time.hour, ':', time.minute, ':', time.second); GotoXY(1, 1); x := x0 + Round(60 * sin(Pi * time.hour / 6)); y := y0 - Round(60 * cos(Pi * time.hour / 6)); SetPenWidth(10); Line(x0, y0, x, y); x := x0 + Round(100 * sin(Pi * time.minute / 30)); y := y0 - Round(100 * cos(Pi * time.minute / 30)); SetPenWidth(7); Line(x0, y0, x, y); x := x0 + Round(120 * sin(Pi * time.second / 30)); y := y0 - Round(120 * cos(Pi * time.second / 30)); SetPenWidth(3); Line(x0, y0, x, y); Redraw until keyPressed; end.
Объяснение кода листинга программы
- В начале кода используются необходимые библиотеки Crt, GraphABC и Utils.
- Создается тип данных DateTime, который представляет аналоговые часы и содержит поля для дня, месяца, года, часа, минуты, секунды и миллисекунд.
- Переменная time устанавливается в текущее время.
- Устанавливаются размеры окна и скрывается курсор.
- Замораживается область рисования.
- Начинается цикл повторения, который выполняется до нажатия клавиши.
- Внутри цикла очищается окно, рисуется круг, устанавливается цвет шрифта и стиль шрифта.
- Выводится текстовое сообщение с текущим временем.
- Устанавливается новая позиция курсора.
- Вычисляются координаты точки на экране, соответствующей текущему времени.
- Рисуется линия между текущей точкой и предыдущей.
- Повторяются шаги 7-11 для минутной и секундной стрелок.
- Вызывается функция Redraw для обновления изображения.
- Цикл повторяется до нажатия клавиши.
- В конце кода вызывается функция keyPressed для обработки нажатия клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д