Saturday, July 21, 2007

Clock

//To draw a clock using line and circle drawing algorithms

#include
#include
#include
#include
#include "c:\tc\bin\praseo\dda.h"
#include "c:\tc\bin\praseo\circle.h"
#define pi 3.14159

int main()
{
//declaration
//time structure
struct time t;
//graphics variables
int gdriver,gmode;
//clock variables
int hour,minute,second;
float sec_angle,min_angle,hour_angle;

//co-ordinates
int x1,y1;
int sec_x2,sec_y2,min_x2,min_y2,hour_x2,hour_y2;

//temporary variables
int i;

//getting current system time
gettime(&t);
hour=t.ti_hour;
minute=t.ti_min;
second=t.ti_sec;

gdriver=DETECT;
clrscr();
x1=320;
y1=240;

initgraph(&gdriver,&gmode,"c:\\tc\\bgi\\");
circles(x1,y1,139);
circles(x1,y1,140);
circles(x1,y1,141);

//hand movement
while(!kbhit())
{

//second hand movement
if(second!=60)
{
sec_angle=(second*(pi/30)-(pi/2));
sec_x2=320+(120*cos(sec_angle));
sec_y2=240+(120*sin(sec_angle));
drawline(x1,y1,sec_x2,sec_y2,15);

min_angle=(minute*(pi/30)-(pi/2));
min_x2=320+(90*cos(min_angle));
min_y2=240+(90*sin(min_angle));
drawline(x1,y1,min_x2,min_y2,1);

hour_angle=(hour*(pi/6)-(pi/2));
hour_x2=320+(55*cos(hour_angle));
hour_y2=240+(55*sin(hour_angle));
drawline(x1,y1,hour_x2,hour_y2,2);

delay(1000);
drawline(x1,y1,sec_x2,sec_y2,0);
second++;
}
//minute hand increment
if(second==60)
{
drawline(x1,y1,min_x2,min_y2,0);
minute++;
second=0;
}
//hour hand increment
if(minute==60)
{
drawline(x1,y1,hour_x2,hour_y2,0);
hour++;
minute=0;
}


}
closegraph();
return 0;
}

No comments: