• Сделать электронный циферблат в паскале.

Ответы 1

  • Uses Graph, CRT;   var       d,r,r1,r2,rr,k,       x1,y1,x2,y2,x01,y01: Integer;       Xasp,Yasp : Word;begin  {Инициируем графику}     d := detect;     InitGraph(d, r, ' ') ;     k:= GraphResult;     if k <> grOK then  WriteLn(GraphErrorMSG(k))  elsebegin{Определяем отношение сторон и размеры экрана}x1 := GetMaxX div 2;y1 := GetMaxY div 2;GetAspectRatio(Xasp, Yasp);{Вычисляем радиусы:} r:= round(3*GetMaxY*Yasp/8/Xasp); r1 := round(0.9*r); {Часовые деления} r2 := round(0.95*r); {Минутные деления}{Изображаем циферблат} Circle(x1,y1,r); {Первая внешняя окружность} Circle(x1,y1,round(1.02*r)); {Вторая окружность}   for k := 0 to 59 do {Деления циферблата}    begin       if k mod 5=0 then           rr := r1 {Часовые деления}      else           rr:= r2 ; {Минутные деления}{Определяем координаты концов делений} x01 := x1+Round(rr*sin(2*pi*k/60)); y01 := y1-Round(rr*Xasp*cos(2*pi*k/60)/Yasp); x2 := x1+Round(r*sin(2*pi*k/60)); y2 := y1-Round(r*Xasp*cos(2*pi*k/60)/Yasp); Line(x01,y01,x2,y2) {Выводим деление}end;{Готовим вывод стрелок} SetWriteMode(XORPut); SetLineStyle(SolidLn,0,ThickWidth); r := 0; {Счетчик минут в одном часе}{Цикл вывода стрелок} repeat   for k := 0 to 59 do {k = минуты}      if not KeyPressed then         begin                {Координаты часовой стрелки}                x2 := x1+Round(0.85*r1*sin(2*pi*r/60/12));                y2 := y1-Round(0.85*r1*Xasp*cos(2*pi*r/60/12)/Yasp);                {Координаты минутной стрелки}                x01:= x1+Round(r2*sin(2*pi*k/60));                y01:= y1-Round(r2*Xasp*cos(2*pi*k/60)/Yasp);                {Изображаем стрелки}                 Line(x1,y1,x2,y2);                 Line(x1,y1,x01,y01);                 Delay(100); {Для имитации реального темпа                                      нужно установить задержку 60000}                                     {Для удаления стрелок выводим их еще раз!}                 Line(x1,y1,x01,y01);                 Line (x1,y1,x01,y01 ) ;{Наращиваем и корректируем счетчик минут в часе}inc(r);if r=12*60  then r := 0enduntil KeyPressed;if ReadKey=#0 then k:=ord(ReadKey);CloseGraph;endend.
    • Автор:

      champm1lt
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years