Section courante

A propos

Section administrative du site

Rien de tel que pour rendre intéressant l'affichage de l'heure, que d'effectuer l'affichage d'une horloge à aiguille! Voici le code source Free Pascal :

  1. Program Horloge;
  2.  
  3. Uses Crt,DOS,Graph;
  4.  
  5. Const
  6.  Cx:Integer=320;
  7.  Cy:Integer=240;
  8.  Rx:Integer=200;
  9.  Ry:Integer=200;
  10.  XH:Integer=0;
  11.  YH:Integer=0;
  12.  XM:Integer=0;
  13.  YM:Integer=0;
  14.  XS:Integer=0;
  15.  YS:Integer=0;
  16.  
  17. Var
  18.  Hour,_Min,Sec,Hund:Word;
  19.  R:Real;
  20.  
  21. Procedure drawClock;
  22. Var
  23.  I,Tx,Ty:Integer;
  24.  R:Real;
  25.  StrTime:String;
  26. Begin
  27.  For I := 0 To 59 do Begin
  28.   R := I * Pi / 30;
  29.   Tx := Trunc(cos(R) * Rx) + Cx;
  30.   Ty := Trunc(sin(R) * Ry) + Cy;
  31.   SetFillStyle(SolidFill,WHITE);
  32.   Bar(Tx,Ty,Tx+5,Ty+5);
  33.  End;
  34.  For I := 0 to 11 do Begin
  35.   R := I * Pi / 6;
  36.   Tx := Trunc(cos(R) * Rx) + Cx;
  37.   Ty := Trunc(sin(R) * Ry) + Cy;
  38.   SetFillStyle(SolidFill,WHITE);
  39.   Bar(Tx,Ty,Tx+8,Ty+8);
  40.   SetColor(WHITE);
  41.   Str(((I+2) mod 12 + 1),StrTime);
  42.   OutTextXY((Trunc(cos(R)*(Rx-15))+Cx+3),(Trunc(sin(R)*(Ry-15))+Cy+3),StrTime);
  43.  End;
  44. End;
  45.  
  46. Var
  47.  PiloteGraph:Integer;
  48.  ModeGraph:Integer;
  49.  
  50. BEGIN
  51.  PiloteGraph:=Detect;
  52.  ModeGraph:=Detect;
  53.  InitGraph(PiloteGraph,ModeGraph,'');
  54.  drawClock;
  55.  Repeat
  56.   GetTime(Hour,_Min,Sec,Hund);
  57.   SetColor(BLACK);
  58.   MoveTo(Cx, Cy);
  59.   LineTo(XH, YH);
  60.   MoveTo(Cx, Cy);
  61.   LineTo(XM, YM);
  62.   MoveTo(Cx, Cy);
  63.   LineTo(XS, YS);
  64.   R := Pi * ((30 * Hour + (_Min shr 1))/180 + 1.5);
  65.   XH := Cx + Trunc(cos(R)*(Rx-35)) + 1;
  66.   YH := Cy + Trunc(sin(R)*(Ry-35)) + 1;
  67.   SetColor(LIGHTRED);
  68.   MoveTo(Cx, Cy);
  69.   LineTo(XH, YH);
  70.   R := Pi * (_Min / 30 + 1.5);
  71.   XM := Cx + Trunc(cos(R)*(Rx-20)) + 1;
  72.   YM := Cy + Trunc(sin(R)*(Ry-20)) + 1;
  73.   SetColor(YELLOW);
  74.   MoveTo(Cx, Cy);
  75.   LineTo(XM, YM);
  76.   R := Pi * (Sec / 30 + 1.5);
  77.   XS := Cx + Trunc(cos(R)*(Rx-25)) + 1;
  78.   YS := Cy + Trunc(sin(R)*(Ry-25)) + 1;
  79.   SetColor(LIGHTGREEN);
  80.   MoveTo(Cx, Cy);
  81.   LineTo(XS, YS);
  82.   Delay(500);
  83.  Until KeyPressed;
  84. END.

Voici en terminant un exemple du résultat de se petit programme :



Dernière mise à jour : Jeudi, le 29 décembre 2011