- Код: Выделить всё
- Program fdgfaf;
 uses graph, crt, SysUtils;
 var
 c : char;
 T : TSystemTime;
 gd, gm, r,r1, x, y,i,j,n : integer;
 H, PrH, PrM, PrS : integer;
 PrS1,PrH1,PrM1,PrM2 : integer;
 x1,y1,x2,y2,a,b,a1,b1,a2,b2 : integer;
 const
 Grd : double=pi/180;
 BEGIN
 gd:=vga;
 gm:=2;
 InitGraph(gd,gm,'');
 r:=174;
 r1:=175;
 //Џ®¤Ј®в®ўЄ* жЁдҐаЎ«*в*.
 SetColor(15);
 SetFillStyle(1,12);
 Circle(300,250,200);
 Circle(300,250,180);
 FloodFill(110,250,15);
 SetColor(15);
 SetFillStyle(1,10);
 Circle(300,250,174);
 FloodFill(126,250,15);
 SetColor(15);
 SetFillStyle(1,15);
 FloodFill(299,249,15);
 SetFillStyle(1,12);
 Bar(150,247,170,253);
 Bar(435,247,455,253);
 Bar(297,389,303,409);
 Bar(297,95,303,115);
 repeat
 GetLocalTime(T);
 if T.Hour>=12
 then H:=T.Hour-12
 else H:=T.Hour;
 if PrH<>T.Hour
 then
 begin
 
 x:=300+round((r-95)*sin(PrH*30*Grd));
 y:=250-round((r-95)*cos(PrH*30*Grd));
 SetColor(15);
 Line(300,250,x,y);
 PrH:=T.Hour;
 end;
 if (PrM<>T.Minute) and (PrM1<>T.Minute+1)
 then
 begin
 a:=300+Round((r-65)*sin(PrM*6*Grd));
 b:=250-Round((r-65)*cos(PrM*6*Grd));
 a1:=300+Round((r-85)*sin(PrM*6*Grd));
 b1:=250-Round((r-85)*cos(PrM*6*Grd));
 a2:=300+Round((r-85)*sin(PrM1*6*Grd));
 b2:=250-Round((r-85)*cos(PrM1*6*Grd));
 PrM:=T.Minute;
 PrM1:=T.Minute+1;
 end;
 if (PrS<>T.Second) and (PrS1<>T.Second+1)
 then
 begin
 x:=300+Round((r-25)*sin(PrS*6*Grd));
 y:=250-Round((r-25)*cos(PrS*6*Grd));
 x1:=300+Round((r-105)*sin(PrS*6*Grd));
 y1:=250-Round((r-105)*cos(PrS*6*Grd));
 x2:=300+Round((r-105)*sin(PrS1*6*Grd));
 y2:=250-Round((r-105)*cos(PrS1*6*Grd));
 PrS:=T.Second;
 PrS1:=T.Second+1;
 end;
 SetColor(0);
 SetFillStyle(1,15);
 Bar(345,240,400,255);
 SetfillStyle(1,12);
 OutTextXY(350,247,Format('%.2d.%.2d.%.4d',[T.Day, T.Month, T.Year]));
 SetFillStyle(1,15);
 Bar(265,365,370,390);
 SetFillStyle(1,12);
 SetColor(0);
 OutTextXY(270,370,Format('%.2d:%.2d:%.2d',[T.Hour, T.Minute, T.Second]));
 case T.Second of
 00..01,59 : Bar(297,95,303,115);
 14..16 : Bar(435,247,455,253);
 29..31 : Bar(297,389,303,409);
 44..46 : Bar(150,247,170,253);
 end;
 
 x:=300+Round((r-95)*sin(H*30*Grd));
 y:=250-Round((r-95)*cos(H*30*Grd));
 SetColor(0);
 Line(300,250,x,y);
 a:=300+Round((r-65)*sin(T.Minute*6*Grd));
 b:=250-Round((r-65)*cos(T.Minute*6*Grd));
 a2:=300+Round((r-85)*sin(PrM1*6*Grd));
 b2:=250-Round((r-85)*cos(PrM1*6*Grd));
 SetColor(4);
 Line(a,b,a1,b1);
 Line(a,b,a2,b2);
 Line(a1,b1,301,250);
 Line(a2,b2,301,250);
 x:=300+Round((r-25)*sin(T.Second*6*Grd));
 y:=250-Round((r-25)*cos(T.Second*6*Grd));
 x2:=300+Round((r-105)*sin(PrS1*6*Grd));
 y2:=250-Round((r-105)*cos(PrS1*6*Grd));
 SetColor(12);
 Line(x,y,x1,y1);
 Line(x,y,x2,y2);
 Line(x1,y1,300,250);
 Line(x2,y2,300,250);
 Delay(500);
 setcolor(15);
 Line(x,y,x1,y1);
 Line(x,y,x2,y2);
 Line(x1,y1,300,250);
 Line(x2,y2,300,250);
 until keypressed;
 ReadLn;
 CloseGraph;
 END.
Вот моя программа.Часы рабочие, вот только сделать стрелки нужно объёмные.Вот тут я и столкнулся с такой проблемой.Секундную сделал, минутную не получаеться уродует её но потом когда новое положение минутной стрелки то всё нормализуеться.Подскажите пожалуйсто в чём проблема! p.s к часовой не пруступал т.к был шокирован минутной...



