uses graph,crt,vga,DOS; var i,j,x,y,x1,y1,x02,y02,x12,y12 : integer; SecX,SecY,SecXL,SecYL,HourX,HourY,HourXL,HourYL,MinX,MinY,MinXL,MinYL : real; Hour : string; TH,TM,TS,TMS,THL,TML,TSL : word; const Rad1=200; Rad2=180; CenX=320; CenY=240; begin InitVGA; Circle(CenX,CenY,Rad1); x:=rad2; y:=0; x1:=rad1; y1:=0; SetTextJustify(CenterText,CenterText); for i:= 1 to 60 do begin Line(cenx+X1,ceny+Y1,cenX+X,CenY+Y); if (I) mod 5 = 0 then begin x1:=round(rad1*cos(6*i*pi/180)); y1:=round(rad1*sin(6*i*pi/180)); x:=round(rad2*cos(6*i*pi/180)); y:=round(rad2*sin(6*i*pi/180)); end else begin x1:=round(rad1*cos(6*i*pi/180)); y1:=round(rad1*sin(6*i*pi/180)); x:=round((rad1-5)*cos(6*i*pi/180)); y:=round((rad1-5)*sin(6*i*pi/180)); end; if (I) mod 5 = 0 then begin str(((I-1) div 5+3) mod 12+1,hour); OutTextXY(cenx+round((rad2-10)*cos(6*i*pi/180)), ceny+round((rad2-10)*sin(6*i*pi/180)),hour); end; end; GetTime(TH,TM,TS,TMS); TH:=TH mod 12; SecXL:=round((rad1-10)*cos((6*TS-90)*pi/180)); SecYL:=round((rad1-10)*sin((6*TS-90)*pi/180)); MinXL:=round((rad2-10)*cos((6*TM+6/60*TS-90)*pi/180)); MinYL:=round((rad2-10)*sin((6*TM+6/60*TS-90)*pi/180)); HourXL:=round((rad2-70)*cos((30*TH+0.5*TM+30/60/60*TS-90)*pi/180)); HourYL:=round((rad2-70)*sin((30*TH+0.5*TM+30/60/60*TS-90)*pi/180)); SetWriteMode(XORPut); Line(CenX,CenY,round(CenX+HourXL),round(ceny+HourYL)); Line(CenX,CenY,round(CenX+MinXL),round(ceny+MinYL)); Line(CenX,CenY,round(CenX+SecXL),round(ceny+SEcYL)); repeat GetTime(THL,TML,TSL,TMS); if (TH<>THL) or (TM<>TML) or (TS<>TSL) then begin Line(CenX,CenY,round(CenX+HourXL),round(ceny+HourYL)); Line(CenX,CenY,round(CenX+MinXL),round(ceny+MinYL)); Line(CenX,CenY,round(CenX+SecXL),round(ceny+SEcYL)); SecX := SecXL*cos(6*pi/180) - SecYL*sin(6*pi/180); SecY := SecXL*sin(6*pi/180) + SecYL*Cos(6*pi/180); MinX := MinXL*cos(6/60*pi/180) - MinYL*sin(6/60*pi/180); MinY := MinXL*sin(6/60*pi/180) + MinYL*Cos(6/60*pi/180); HourX := HourXL*cos(6/60/12*pi/180) - HourYL*sin(6/60/12*pi/180); HourY := HourXL*sin(6/60/12*pi/180) + HourYL*Cos(6/60/12*pi/180); Line(CenX,CenY,round(CenX+HourX),round(ceny+HourY)); Line(CenX,CenY,round(CenX+MinX),round(ceny+MinY)); Line(CenX,CenY,round(CenX+SecX),round(ceny+SEcY)); SecXL:=SecX; SecYL:=SecY; minXL:=MinX; MinYL:=MinY; HourXL:=HourX; HourYL:=HourY; end; TH:=THL; TM:=TML; TS:=TSL; until keypressed; Closegraph; end.