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
;
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
.