Programalama > PASCAL

Etiketler: digital, analog, saat

Ort. 0
Puan ver:
program grafik_ortamda_dijital_ve_analog_saat;
uses dos,crt,graph;
const acisabit           =pi/180;
     akrepibrekatsayi   =0.6;
     yelkovanibrekatsayi=0.75;
     saniyeibrekatsayi  =0.85;
     akreprenk          =red;
     yelkovanrenk       =blue;
     saniyerenk         =magenta;
     anlgsaatrakamrenk  =lightred;
     djtlsaatyazirenk   =lightblue;
var grfsurucu,grfmodu   :integer;
    djtlsaatyazx,djtlsaatyazy,
    anlgsaatmerkezx,anlgsaatmerkezy,anlgsaatyaricap,
    akrepibreboy,akrebsonx,akrebsony,
    yelkovanibreboy,yelkovansonx,yelkovansony,
    saniyeibreboy,saniyesonx,saniyesony:word;

    function sayidancumleye(sayi:longint):string;
    var st:string[10];
    begin
    st:=''; str(sayi,st);
    if length(st)<=1 then st:='0'+st;
    sayidancumleye:=st;
    end;

    function sinusdegerix(katsayi:real;aci:word):word;
    begin sinusdegerix:=anlgsaatmerkezx+round(katsayi*sin(acisabit*aci));end;

    function cosinusdegeriy(katsayi:real;aci:word):word;
    begin cosinusdegeriy:=anlgsaatmerkezy-round(katsayi*cos(acisabit*aci));end;

    procedure saatilkislemler;
     procedure saatrakamlariniyaz;
     var eskirenk,aci,k:word;
     eskiyazistili:textsettingstype;
     begin
      eskirenk:=getcolor;
      setcolor(anlgsaatrakamrenk);
      gettextsettings(eskiyazistili);
      settextstyle(gothicfont,horizdir,3);
      settextjustify(centertext,centertext);
      for k:=1 to 12 do
      begin
      aci:=30*k;
      line (sinusdegerix(anlgsaatyaricap,aci),
           cosinusdegeriy(anlgsaatyaricap,aci),
           sinusdegerix(0.95*anlgsaatyaricap,aci),
           cosinusdegeriy(0.95*anlgsaatyaricap,aci));
      outtextxy(sinusdegerix(1.1*anlgsaatyaricap,aci),
           cosinusdegeriy(1.1*anlgsaatyaricap,aci),sayidancumleye(k));
      end;{for k}
      with eskiyazistili do
      begin
      settextstyle(font,direction,charsize);
      settextjustify(horiz,vert);
      end;
      setcolor(eskirenk);
      end;

      procedure ibreilkislemler(var ibreboy,sonx,sony:word; ibrekatsayi:real);
      begin
       ibreboy:=round(anlgsaatyaricap*ibrekatsayi);
       sonx:=anlgsaatmerkezx;
       sony:=anlgsaatmerkezy;
      end;
      begin
       settextstyle(sansseriffont,horizdir,3);
       setusercharsize(2,1,1,1);
       setcolor(djtlsaatyazirenk);
       setlinestyle(solidln,0,thickwidth);
       djtlsaatyazx:=(getmaxx-textwidth('99:99:99')) div 2;
       djtlsaatyazy:=getmaxy-round(1.2*textheight('9'));

       rectangle(0,0,getmaxx,djtlsaatyazy);
       rectangle(0,djtlsaatyazy,getmaxx,getmaxy);
       anlgsaatmerkezx:=getmaxx div 2;
       anlgsaatmerkezy:=djtlsaatyazy div 2;
       anlgsaatyaricap:=round(anlgsaatmerkezy*0.80);
       circle(anlgsaatmerkezx,anlgsaatmerkezy,anlgsaatyaricap div 20);
       circle(anlgsaatmerkezx,anlgsaatmerkezy,anlgsaatyaricap);

       saatrakamlariniyaz;
       ibreilkislemler(akrepibreboy,akrebsonx,akrebsony,akrepibrekatsayi);
       ibreilkislemler(yelkovanibreboy,yelkovansonx,yelkovansony,yelkovanibrekatsayi);
       ibreilkislemler(saniyeibreboy,saniyesonx,saniyesony,saniyeibrekatsayi);
      end;

      procedure dijitalanalogsaatleriguncelle;
      var aktifsaat,aktifdakika,aktifsaniye,
      salise,oncekisaniye,oncekidakika         :word;
      oncesaatdakikasaniye,simdisaatdakikasaniye:string[8];
       procedure dijitalsaatiguncelle;
        begin
         setcolor(djtlsaatyazirenk);
         outtextxy(djtlsaatyazx,djtlsaatyazy,oncesaatdakikasaniye);
         simdisaatdakikasaniye:=sayidancumleye(aktifsaat)+':'+
                                sayidancumleye(aktifdakika)+':'+
                                sayidancumleye(aktifsaniye);
         outtextxy(djtlsaatyazx,djtlsaatyazy,simdisaatdakikasaniye);
         oncesaatdakikasaniye:=simdisaatdakikasaniye;
        end;

       procedure analogsaatiguncelle;
        procedure ibrehareket(var sonx,sony:word; renk,ibreboy,aci:word);
         begin
          setcolor(renk);
          line(anlgsaatmerkezx,anlgsaatmerkezy,sonx,sony);
          sonx:=sinusdegerix(ibreboy,aci);
          sony:=cosinusdegeriy(ibreboy,aci) ;
          line(anlgsaatmerkezx,anlgsaatmerkezy,sonx,sony)
         end;
         begin
          if aktifdakika<>oncekidakika then
          begin
          ibrehareket(akrebsonx,akrebsony,akreprenk,akrepibreboy,
                      aktifsaat*30+round(aktifdakika/2));
          ibrehareket(yelkovansonx,yelkovansony,yelkovanrenk,
                     yelkovanibreboy,aktifdakika*6);
          oncekidakika:=aktifdakika;
          end;
         ibrehareket(saniyesonx,saniyesony,saniyerenk,saniyeibreboy,aktifsaniye*6);
         end;
        begin
         oncekisaniye:=61; oncekidakika:=61; oncesaatdakikasaniye:='';
         setwritemode(xorput);
         repeat
         gettime(aktifsaat,aktifdakika,aktifsaniye,salise);
         if aktifsaniye<>oncekisaniye then
         begin
          dijitalsaatiguncelle;
          analogsaatiguncelle;
          oncekisaniye:=aktifsaniye
         end;
         until keypressed and (readkey=#27);
         end;


begin
     grfsurucu:=detect;
     initgraph(grfsurucu,grfmodu,'C:\BP\bgi');
     if graphresult<>grok then exit;
     saatilkislemler;
     dijitalanalogsaatleriguncelle;
     closegraph;
end.


Yorumlar                 Yorum Yaz
Bu hazır kod'a ilk yorumu siz yapın!
KATEGORİLER
ASP - 240
ASP.NET - 24
C# - 75
C++ - 174
CGI - 8
DELPHI - 247
FLASH - 49
HTML - 536
PASCAL - 246
PERL - 11
PHP - 160
WML - 9
XML - 2
Copyright © 2002 - 2024 Hazır Kod - Tüm Hakları Saklıdır.
Siteden yararlanırken gizlilik ilkelerini okumanızı tavsiye ederiz.
hazirkod.com bir İSOBİL projesidir.