Опубликовано: 2020-05-06 08:00:00
Аналоговые часы
В этой статье представлена неплохая реализация аналоговых часов.
Рассмотрим исходный текст программы:
- SCREEN 12
- CONST PI = 3.14159265358#
- X0 = 320: Y0 = 240: R = 220: RS = 200: RM = 180: RH = 175: DIM C$(12)
- DATA XII,I,II,III,IV,V,VI,VII,VIII,IX,X,XI
- FOR I = 1 TO 12: READ C$(I): NEXT
- CIRCLE (X0, Y0), R, 4
- FOR S = 0 TO 59
- AX = CINT(X0 - R * COS((PI / 180) * (6 * S + 90)))
- AY = CINT(Y0 - R * SIN((PI / 180) * (6 * S + 90)))
- AX1 = CINT(X0 - (R - 15) * COS((PI / 180) * (6 * S + 90)))
- AY1 = CINT(Y0 - (R - 15) * SIN((PI / 180) * (6 * S + 90)))
- AX2 = CINT(X0 - (R - 5) * COS((PI / 180) * (6 * S + 90)))
- AY2 = CINT(Y0 - (R - 5) * SIN((PI / 180) * (6 * S + 90)))
- IF S MOD 5 = 0 THEN
- LINE (AX, AY)-(AX1, AY1), 5
- LOCATE AY1 / 16, AX1 / 8: PRINT C$((S / 5) + 1)
- ELSE
- LINE (AX, AY)-(AX2, AY2), 5
- END IF
- NEXT
- WHILE INKEY$ = ""
- A$ = TIME$
- H = VAL(MID$(A$, 1, 2))
- M = VAL(MID$(A$, 4, 2))
- S1 = S: S = VAL(MID$(A$, 7, 2))
- IF S1 <> S THEN
- LINE (X0, Y0)-(XS, YS), 0
- LINE (X0, Y0)-(XM, YM), 0
- LINE (X0, Y0)-(XH, YH), 0
- XS = CINT(X0 - RS * COS((PI / 180) * (6 * S + 90)))
- YS = CINT(Y0 - RS * SIN((PI / 180) * (6 * S + 90)))
- LINE (X0, Y0)-(XS, YS), 4
- XM = CINT(X0 - RM * COS((PI / 180) * (90 + 6 * M)))
- YM = CINT(Y0 - RM * SIN((PI / 180) * (90 + 6 * M)))
- LINE (X0, Y0)-(XM, YM), 15
- XH = CINT(X0 - RH * COS((PI / 180) * (90 + 6 * ((H MOD 12) * 5 + M \ 12))))
- YH = CINT(Y0 - RH * SIN((PI / 180) * (90 + 6 * ((H MOD 12) * 5 + M \ 12))))
- LINE (X0, Y0)-(XH, YH), 1
- END IF
- WEND
Рисунок 1 – Исходный текст для построения аналоговых часов
Рисунок 2 – Результат построения аналоговых часов
Спасибо за прочтение этой статьи.
Прикрепленные файлы: