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 Turbo 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.  Err:Integer;
  19.  Hour,Min,Sec,Hund:Word;
  20.  R:Real;
  21.  Gd,Gm:Integer;
  22.  
  23. Procedure drawClock;
  24. Var
  25.  I,Tx,Ty:Integer;
  26.  R:Real;
  27.  StrTime:String;
  28. Begin
  29.  For I := 0 To 59 do Begin
  30.   R := I * Pi / 30;
  31.   Tx := Trunc(Cos(R) * Rx) + Cx;
  32.   Ty := Trunc(Sin(R) * Ry) + Cy;
  33.   SetFillStyle(SolidFill, WHITE);
  34.   Bar(Tx,Ty,Tx+5,Ty+5);
  35.  End;
  36.  For I := 0 to 11 do Begin
  37.   R := I * Pi / 6;
  38.   Tx := Trunc(cos(R) * Rx) + Cx;
  39.   Ty := Trunc(sin(R) * Ry) + Cy;
  40.   SetFillStyle(SolidFill, WHITE);
  41.   Bar(Tx,Ty,Tx+8,Ty+8);
  42.   SetColor(WHITE);
  43.   Str(((I+2) mod 12 + 1),StrTime);
  44.   OutTextXY((Trunc(cos(R)*(Rx-15))+Cx+3),(Trunc(sin(R)*(Ry-15))+Cy+3),StrTime);
  45.  End;
  46. End;
  47.  
  48. BEGIN
  49.   Gd := Detect;
  50.  InitGraph(Gd, Gm,'');
  51.  If(GraphResult <> grOk)Then Halt(1);
  52.  drawClock;
  53.  Repeat
  54.   GetTime(Hour,Min,Sec,Hund);
  55.   SetColor(BLACK);
  56.   MoveTo(Cx, Cy);
  57.   LineTo(XH, YH);
  58.   MoveTo(Cx, Cy);
  59.   LineTo(XM, YM);
  60.   MoveTo(Cx, Cy);
  61.   LineTo(XS, YS);
  62.   R := Pi * ((30 * Hour + (Min shr 1))/180 + 1.5);
  63.   XH := Cx + Trunc(cos(R)*(Rx-35)) + 1;
  64.   YH := Cy + Trunc(sin(R)*(Ry-35)) + 1;
  65.   SetColor(LIGHTRED);
  66.   MoveTo(Cx, Cy);
  67.   LineTo(XH, YH);
  68.   R := Pi * (Min / 30 + 1.5);
  69.   XM := Cx + Trunc(cos(R)*(Rx-20)) + 1;
  70.   YM := Cy + Trunc(sin(R)*(Ry-20)) + 1;
  71.   SetColor(YELLOW);
  72.   MoveTo(Cx, Cy);
  73.   LineTo(XM, YM);
  74.   R := Pi * (Sec / 30 + 1.5);
  75.   XS := Cx + Trunc(cos(R)*(Rx-25)) + 1;
  76.   YS := Cy + Trunc(sin(R)*(Ry-25)) + 1;
  77.   SetColor(LIGHTGREEN);
  78.   MoveTo(Cx, Cy);
  79.   LineTo(XS, YS);
  80.   Delay(50);
  81.  Until KeyPressed;
  82. END.

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




Dernière mise à jour : Dimanche, le 17 janvier 2016