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 QuickPascal:

  1. Program Horloge;
  2.  
  3. Uses Crt,DOS,MSGraph;
  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,Hour,Min,Sec,Hund:Integer;
  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.   _SetColor(WHITE);
  32.   _Rectangle(_GFillInterior,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.   _SetColor(WHITE);
  39.   _Rectangle(_GFillInterior,Tx,Ty,Tx+8,Ty+8);
  40.   _SetTextPosition((Trunc(sin(R)*(Ry-15))+Cy+3+16)shr 4,(Trunc(cos(R)*(Rx-15))+Cx+3)shr 3);
  41.   _SetColor(WHITE);
  42.   Str(((I+2) mod 12 + 1),StrTime);
  43.   _OutText(StrTime);
  44.  End;
  45. End;
  46.  
  47. BEGIN
  48.  Err:=_SetVideoMode(_VRes16Color);
  49.  drawClock;
  50.  Repeat
  51.   GetTime(Hour,Min,Sec,Hund);
  52.   _SetColor(BLACK);
  53.   _MoveTo(Cx, Cy);
  54.   _LineTo(XH, YH);
  55.   _MoveTo(Cx, Cy);
  56.   _LineTo(XM, YM);
  57.   _MoveTo(Cx, Cy);
  58.   _LineTo(XS, YS);
  59.   R := Pi * ((30 * Hour + (Min shr 1))/180 + 1.5);
  60.   XH := Cx + Trunc(cos(R)*(Rx-35)) + 1;
  61.   YH := Cy + Trunc(sin(R)*(Ry-35)) + 1;
  62.   _SetColor(LIGHTRED);
  63.   _MoveTo(Cx, Cy);
  64.   _LineTo(XH, YH);
  65.   R := Pi * (Min / 30 + 1.5);
  66.   XM := Cx + Trunc(cos(R)*(Rx-20)) + 1;
  67.   YM := Cy + Trunc(sin(R)*(Ry-20)) + 1;
  68.   _SetColor(YELLOW);
  69.   _MoveTo(Cx, Cy);
  70.   _LineTo(XM, YM);
  71.   R := Pi * (Sec / 30 + 1.5);
  72.   XS := Cx + Trunc(cos(R)*(Rx-25)) + 1;
  73.   YS := Cy + Trunc(sin(R)*(Ry-25)) + 1;
  74.   _SetColor(LIGHTGREEN);
  75.   _MoveTo(Cx, Cy);
  76.   _LineTo(XS, YS);
  77.   Delay(50);
  78.  Until KeyPressed;
  79. END.

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




Dernière mise à jour : Dimanche, le 4 mai 2014