Аналоговые часы

program clock;
uses
    Graph, Crt, DOS;
var
   x1,x2,x3,y1,y2,y3,xt, yt:integer; {координаты}
   n:real;
   color, i,b:byte; {цвет и счетчики циклов}
   s:string;        {чтобы рисовать текст}
   Gm, Gd:Integer;
   c,m,h, hund:word;
begin
     Gd:=Detect;
     InitGraph(Gd,Gm,'');
     If GraphResult <> grOk then
        Halt(1);
     cleardevice;
     for i:=1 to 12 do begin   {"рисование" циферблата}
       xt:=115 + round(100*sin(6.28*30*i/360));
       yt:=115 - round(100*cos(6.28*30*i/360));

       MoveTo(xt,yt);
       SetColor(lightBlue);
       SetTextStyle(DefaultFont, HorizDir, 1);   { CharSize = 1 }
       SetTextJustify(LeftText, TopText);
       str(i,s);
       OutTextXY(xt,yt,s);
     end;

     gettime(h, m, c, hund);

     x1:=115+round(90*sin((c*6+270)*Pi/180));
     y1:=115-round(90*cos((c*6+270)*Pi/180));
     x2:=115+round(60*sin((m*6+270)*Pi/180));
     y2:=115-round(60*cos((m*6+270)*Pi/180));
     x3:=115+round(40*sin((h*6+270)*Pi/180));
     y3:=115-round(40*cos((h*6+270)*Pi/180));

     repeat
       {стираем старое - рисуем чёрным цветом}
       SetColor(BLACK);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x1,y1);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x2,y2);
       setlineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x3,y3);


       {"рисование" минутной, секундной, и часовой стрелки}
       gettime(h, m, c, hund);
       x1:=115+round(90*sin((c*6+270)*Pi/180));
       y1:=115-round(90*cos((c*6+270)*Pi/180));
       x2:=115+round(60*sin((m*6+270)*Pi/180));
       y2:=115-round(60*cos((m*6+270)*Pi/180));
       x3:=115+round(40*sin((h*6+270)*Pi/180));
       y3:=115-round(40*cos((h*6+270)*Pi/180));
       SetColor(red);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x1,y1);

       {minutnay strelka}
       SetColor(White);
       SetLineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x2,y2);

       {chasovay strelka}
       SetColor(Green);
       setlineStyle(0,0,3);
       MoveTo(120,120);
       LineTo(x3,y3);

       Delay(50);
     until KeyPressed;
     Readln;
     CloseGraph
end.
 
от Serge_Bliznykov http://programmersforum.ru/ 

Комментариев нет:

Отправить комментарий

Если у вас интересные исходники и вы не прочь поделиться, то присылайте daslex@yandex.ru с указанием Темы: Графика Паскаль
К вашей работе будет прикреплено ваше авторство и по желанию добавлена ссылка на ваш сайт.
На одну страницу - Одна работа. На одну работу - Одна ссылка + указание автора


Основное требование - это один файл .pas без сторонних модулей (только с родными. предпочтение Graph).
Можно использовать ассемблерные вставки.

Все что Запускается у меня и работает, я выкладываю. в этом блоге.
Яндекс.Метрика