Analog clock
#include <iostream.h>
#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <time.h>
#include <dos.h>
#define pi 3.14159
int main()
{
int gd=0,gm=0;
int x,y,i;
float x1,y1,x2,y2,x3,y3,p1,q1,p2,q2,p3,q3,hr,mn,sc;
time_t tt;
struct tm *t;
initgraph(&gd,&gm,"c:\\tc\\bgi");
x1=x2=x3=x=getmaxx()/2;
y1=y2=y3=y=getmaxy()/2;
setfillstyle(SOLID_FILL,5);
setcolor(9);//hour circles
for(i=1;i<=12;i++)
{
fillellipse(x+100*cos(i*pi/6),y+100*sin(i*pi/6),4,4);
//outtextxy(x+100*cos(i*pi/6),y+100*sin(i*pi/6),"r");
}
setcolor(4);//minutes circles
for(i=1;i<=60;i++)
{
fillellipse(x+100*cos(i*pi/30),y+100*sin(i*pi/30),2,2);
}
//circle(x,y,108);
while(1)
{
tt=time(NULL);
t=localtime(&tt);
//cout<<ctime(&t);
hr=t->tm_hour+45+(mn/30);
mn=t->tm_min+45;
sc=t->tm_sec+45;
//hour dial
p1=x1;
q1=y1;
setcolor(2);
x1=x+50*cos(hr*pi/30);
y1=y+50*sin(hr*pi/30);
line(x,y,x1,y1);
line(x+1,y+1,x1+1,y1+1);
line(x-1,y-1,x1-1,y1-1);
if(p1!=x1&&q1!=y1)
{
setcolor(0);
line(x,y,p1,q1);
line(x+1,y+1,p1+1,q1+1);
line(x-1,y-1,p1-1,q1-1);
}
//minutes dial
p2=x2;
q2=y2;
setcolor(12);
x2=x+70*cos(mn*pi/30);
y2=y+70*sin(mn*pi/30);
line(x,y,x2,y2);
line(x+1,y+1,x2+1,y2+1);
if(p2!=x2&&q2!=y2)
{
setcolor(0);
line(x,y,p2,q2);
line(x+1,y+1,p2+1,q2+1);
}
//seconds dial
p3=x3;
q3=y3;
setcolor(11);
x3=x+90*cos(sc*pi/30);
y3=y+90*sin(sc*pi/30);
line(x,y,x3,y3);
if(p3!=x3&&q3!=y3)
{
setcolor(0);
line(x,y,p3,q3);
}
gotoxy(49,2);
cout<<" ";
gotoxy(34,2);
cout<<"Time is "<<t->tm_hour<<":"<<t->tm_min<<":"<<t->tm_sec;
delay(10);
if(kbhit())//if a key is pressed
{
closegraph();
return 0;
}
}//end of while
}
Comments
Post a Comment