REM Start of BASIC! Program REM АНАЛОГОВЫЕ ЧАСЫ REM с КАЛЕНДАРЕМ REM UVG REM 480 x 800 ! Выставить независящие от устройства размеры !di_height =800 !di_width = 1280 ! Получить актуальные размеры для данного уст-ва !gr.open 255,255,255,255 !gr.orientation 1 !gr.screen actual_w, actual_h ! Вычислить размеры масштабирования !scale_width = actual_w /!di_width !scale_height = actual_h /!di_height ! Применить масштабирование !gr.scale scale_width, !scale_heigh !! !Включение графического режима  GR.OPEN 255,255,255,255 GR.ORIENTATION 1 GR.SCREEN w1,h1 w=w1/1.66 h=h1/1.6 gr.set.antialias 0 !gr.color 255,255,255,0,0 for f=0 to 128 gr.color 255,255,255,0,0 gr.line fon,0,f*10,h,f*10 gr.color 255,255,255,0,0 gr.line fon,0,f*10+1,h,f*10+1 gr.color 255,0,255,255,0 gr.line fon,f*10,0,f*10,h gr.color 255,0,255,255,0 gr.line fon,f*10+1,0,f*10+1,h next f gr.color 255,255,255,255,1 gr.circle fon,w/2,h/2,250/2 for c=0 to 25 %step -1 gr.color c*10,255,0,0,0 gr.circle f1,w/2,h/2,(250-c)/2 next c gr.color 255,255,255,255,1 gr.rect p1,w/2-125,h-95,w-90,h-140 gr.color 255,0,0,255,0 gr.rect p2,w/2-125,h-95,w-90,h-140 !Проинициализируем начальные точки стрелок XS=0:YS=0:XM=0:YM=0:XCH=0:YCH=0 ! Читаем системное время  TIME year$, month$, day$, hour$, minute$, second$, weekday, isdst ! Определяем, который сейчас час  Chas = VAL(MID$(hour$, 1, 2))  ! А если больше 12, то высчитываем насколько больше  IF Chas > 12 THEN Chas = Chas - 12  ! Теперь смотрим, сколько минут прошло с начала часа  Min = VAL(MID$(minute$, 1, 2))  ! Теперь секунд и превращаем строчку времени в цифры: часы, минуты, секунды  sek = VAL(MID$(second$, 1, 2))  ! Разметка часов - 12 штук  FOR I = 0 TO 360 STEP 30  ! Вычисление координат X и Y меток, переводя при этом градусы в радианы  X = 190 * SIN(I / 180 * 3.14)  Y = 190 * COS(I / 180 * 3.14)  ! Исходная точка в левом верхнем углу рисуем эти точки  gr.color 255,0,0,0,1 gr.circle nc1,w/2+X/2,h/2-Y/2,3 NEXT I for s=0 to 360 step 6 x=190*sin(s/180*3.14) y=190*cos(s/180*3.14) gr.circle nc2,w/2+x/2,h/2-y/2,1 next s for q=0 to 360 step 90 x=190*sin(q/180*3.14) y=190*cos(q/180*3.14) gr.circle nc3,w/2+x/2,h/2-y/2,10/2 next q ! Показ часов, цикл до нажатия клавиши  cikl: ! Количество секунд, прошедших после полуночи, и добавляем секунду  T = TIMER + 1  ! Ждем пока эта секунда пройдет  Z: IF T > TIMER GOTO Z  ! Добавляем к тем еще одну  sek = sek + 1  ! Если больше 60, прибавляем минуту, а секунды превращаем в 1  IF sek > 60 THEN sek = 1: Min = Min + 1 ! Количество минут, и делаем то же с часом  IF Min > 60 THEN Chas = Chas + 1  !С часами, если их больше 12  IF Chas > 12 THEN Chas = 0: sek = 1: Min = 0  ! Выключаем цвет, ! рисуем стрелки по текущим координатам,  ! чтобы затереть их старое положение  gr.color 255,255,255,255 GR.LINE Ls,w/2, h/2,w/2 + XS/2, h/2 - YS/2 GR.LINE Ls,w/2, h/2,w/2+ XM/2, h/2 - YM/2 GR.LINE Ls,w/2, h/2,w/2 + XCH/2, h/2- YCH/2 ! Вычисляем новые положения концов стрелок для секундной, минутной и часовой  XS = 180 * SIN(sek * 6 / 180 * 3.14)  YS = 180 * COS(sek * 6 / 180 * 3.14)  XM = 160* SIN(Min * 6 / 180 * 3.14)  YM = 160* COS(Min * 6 / 180 * 3.14)  XCH = 140 * SIN((Chas * 30 + (Min / 2)) / 180 * 3.14) YCH = 140 * COS((Chas * 30 + (Min / 2)) / 180 * 3.14)  ! Включаем цвет, свой для каждой стрелки  gr.COLOR 255,255,0,0 ! Рисуем стрелки из центра в точки, согласно вычисленным координатам  GR.LINE L1,w/2, h/2,w/2 + XS/2, h/2 - YS/2 gr.COLOR 255,0,0,0 GR.LINE L2,w/2, h/2,w/2 + XM/2, h/2 - YM/2 gr.COLOR 255,0,0,0 GR.LINE L3,w/2, h/2,w/2 + XCH/2, h/2 - YCH/2 ! Если никакая клавиша не нажата, цикл показа часов повторяется.  gr.text.size 100/2 gr.text.draw K1,w/2-125,h-100,day$+"."+month$+"."+year$ gr.render pause 1000 %настройка точности goto cikl