Home » Online Computer Education » C Program of “Analog Clock ” complete program, create analog clock in c language.

C Program of “Analog Clock ” complete program, create analog clock in c language.

 

# include <graphics.h>
# include <dos.h>
# include <stdio.h>
# include <conio.h>
# include <math.h>
# include <process.h>

void frame();
void star_in(int, int, int, int, int, float, float);
void line_at_angle(int, float, int);
void beep(int, int);
void clear (int, int, int, int, int);

void main()
{
int gdriver=DETECT,gmode,errorcode;
initgraph(&gdriver,&gmode,”c:\tc\bgi”);
errorcode=graphresult();
if(errorcode!=grOk)
{
printf(“
Graphics error %s”,grapherrormsg(errorcode));
printf(“
press any key to halt.
“);
exit(1);
}
struct time t;
gettime(&t);
int key,k=0;
int midx,midy;
float hour;
midx=getmaxx()/2;
midy=getmaxy()/2;

frame();

while(1)
{
if(kbhit())
{
key=getch();
if(key==27)
break;
}
gettime(&t);

if(t.ti_hour>=12)
hour=t.ti_hour-12;

float ang_sec=t.ti_sec*6;
float ang_min=(t.ti_min*6)+(ang_sec/60);
float ang_hour=(hour*30)+(ang_min/12);

setcolor(4);
setfillstyle(1,9);
line_at_angle(150,ang_min,2); //min
setcolor(12);
setfillstyle(1,4);
line_at_angle(130,ang_hour,3); //hour
setcolor(14);
line_at_angle(170,ang_sec,1); //sec
line_at_angle(20,180+ang_sec,1); //sec

setfillstyle(1,4);
setcolor(13);
// fillellipse(midx,midy,2,2);
star_in(midx, midy+1, 6, 2, 4, 0, 0);
char tim[5];
struct time t;
int t_sec,t_min;
int x=520,y=460;
gettime(&t);
if(t.ti_hour>12)
{
outtextxy(x+80,y,”PM”);
sprintf(tim,”%d”,t.ti_hour-12);
}
else
{
outtextxy(x+80,y,”AM”);
sprintf(tim,”%d”,t.ti_hour);
}
outtextxy(x,y,tim);
outtextxy(x+16,y,”:”);
outtextxy(x+42,y,”:”);
sprintf(tim,”%d”,t.ti_min);
outtextxy(x+26,y,tim);
sprintf(tim,”%d”,t.ti_sec);
outtextxy(x+50,y,tim);

k++;
if(k==10)
{
k=0;
beep(100,50);
}
else
delay(100);
t_sec = t.ti_sec;
t_min = t.ti_min;
clear(x+50,y,x+70,y+8,0);
if(t_sec >= 59)
clear(x+26,y,x+46,y+8,0);
if(t_min >= 59)
clear(x,y,x+20,y+8,0);

setcolor(0);
setfillstyle(1,0);
line_at_angle(130,ang_hour-6,1);
line_at_angle(150,ang_min-4,1);
line_at_angle(170,ang_sec,1);
line_at_angle(20,180+ang_sec,1);
ang_sec++;
}

closegraph();
}
void frame()
{
int midx,midy;
float angle=0;
float x,y;
midx=getmaxx()/2;
midy=getmaxy()/2;

setlinestyle(1,1,3);
setcolor(2);
circle(midx,midy,223);
setcolor(15);
circle(midx,midy,220);
setcolor(12);
circle(midx,midy,217);
setlinestyle(1,1,3);
setfillstyle(1,2);
setcolor(4);
for(int i=0;i<=60;i++)
{
x=cos((angle/180)*M_PI)*190;
y=sin((angle/180)*M_PI)*190;
if(int(angle)%30!=0)
circle(midx+x,midy+y,2);
angle+=6;
}
angle=0;
setfillstyle(1,4);
setlinestyle(0,1,2);
for(i=0;i<12;i++)
{
setcolor(13);
x=cos((angle/180)*M_PI)*190;
y=sin((angle/180)*M_PI)*190;
if(i%3==0)
{
// fillellipse(midx+x,midy+y,6,6);
setcolor(10);
star_in(midx+x, midy+y, 12, 6, 5, 18, 0);
setcolor(14);
star_in(midx+x, midy+y, 6, 3, 5, 18, 0);
}
else
// fillellipse(midx+x,midy+y,4,4);
star_in(midx+x, midy+y, 8, 3, 5, 18, 0);
angle+=30;
}
}

void line_at_angle(int radius, float angle, int flag)
{
float x,y,x1,y1,x2,y2,x3,y3;
int midx,midy;
angle-=90;

midx=getmaxx()/2;
midy=getmaxy()/2;

x=cos((angle/180)*M_PI)*radius;
y=sin((angle/180)*M_PI)*radius;

setlinestyle(0,1,3);
if(flag==1)
line(midx,midy,midx+x,midy+y);
if(flag==2)
{
setlinestyle(0,1,1);
x2=cos(((angle+3)/180)*M_PI)*(radius-25);
y2=sin(((angle+3)/180)*M_PI)*(radius-25);
x3=cos(((angle-3)/180)*M_PI)*(radius-25);
y3=sin(((angle-3)/180)*M_PI)*(radius-25);
int
poly1[10]={midx,midy,midx+x2,midy+y2,midx+x,midy+y,midx+x3,midy+y3,midx,mi
dy};
fillpoly(5,poly1);
setcolor(0);
x2=cos(((angle)/180)*M_PI)*(radius+1);
y2=sin(((angle)/180)*M_PI)*(radius+1);
x3=cos(((angle-4)/180)*M_PI)*(radius-25);
y3=sin(((angle-4)/180)*M_PI)*(radius-25);
line(midx+x2,midy+y2,midx+x3,midy+y3);
line(midx+x,midy+y,midx+x3,midy+y3);
}
else if(flag==3)
{
setlinestyle(0,1,1);
x2=cos(((angle+5)/180)*M_PI)*(radius-30);
y2=sin(((angle+5)/180)*M_PI)*(radius-30);
x3=cos(((angle-5)/180)*M_PI)*(radius-30);
y3=sin(((angle-5)/180)*M_PI)*(radius-30);
int
poly1[10]={midx,midy,midx+x2,midy+y2,midx+x,midy+y,midx+x3,midy+y3,midx,mi
dy};
fillpoly(5,poly1);
setcolor(0);
x2=cos(((angle)/180)*M_PI)*(radius+1);
y2=sin(((angle)/180)*M_PI)*(radius+1);
x3=cos(((angle-6)/180)*M_PI)*(radius-30);
y3=sin(((angle-6)/180)*M_PI)*(radius-30);
line(midx+x2,midy+y2,midx+x3,midy+y3);
line(midx+x,midy+y,midx+x3,midy+y3);
}
}
void beep(int fre,int wait)
{
sound(fre);
delay(wait);
nosound();
}
void star_in(int x, int y, int r1, int r2, int points, float
angle_intial1, float offset)
{
float angle, theta;
int number = 0;
float xi1, yi1, xf1, yf1, xc1, yc1;
float xi2, yi2, xf2, yf2, xc2, yc2;
float angle_intial2;
float xt,yt;

theta = 360 / points;
angle_intial2 = angle_intial1 + (theta / 2) + offset;
angle_intial1 = (angle_intial1 * M_PI) / 180;
angle_intial2 = (angle_intial2 * M_PI) / 180;

angle = theta;

xc1 = x + (r1 * cos(angle_intial1)),
yc1 = y – (r1 * sin(angle_intial1));
xc2 = x + (r2 * cos(angle_intial2)),
yc2 = y – (r2 * sin(angle_intial2));

xi1 = xc1,
yi1 = yc1;
xi2 = xc2,
yi2 = yc2;

xt = xc1;
yt = yc1;

while(number <= points + 1)
{
angle = (angle * M_PI) / 180;

xc1 = xc1 – x;
yc1 = yc1 – y;
xc2 = xc2 – x;
yc2 = yc2 – y;

xf1 = ( xc1 * cos(angle) ) – ( yc1 * sin( angle ) );
yf1 = ( xc1 * sin(angle) ) + ( yc1 * cos( angle ) );
xf2 = ( xc2 * cos(angle) ) – ( yc2 * sin( angle ) );
yf2 = ( xc2 * sin(angle) ) + ( yc2 * cos( angle ) );

xc1 = xc1 + x;
yc1 = yc1 + y;
xc2 = xc2 + x;
yc2 = yc2 + y;

xf1 = xf1 + x;
yf1 = yf1 + y;
xf2 = xf2 + x;
yf2 = yf2 + y;

if(number != points + 1)
line(xi1, yi1, xi2, yi2);
line(xt, yt, xi2, yi2);

xt = xi1;
yt = yi1;

xi1 = xf1,
yi1 = yf1;
xi2 = xf2,
yi2 = yf2;

number++;
angle = theta * number;
}
}

void clear(int x1, int y1, int x2, int y2, int col)
{
int x,y;
for(x=x1;x<=x2;x++)
for(y=y1;y<=y2;y++)
putpixel(x,y,col);
}

About

The main objective of this website is to provide quality study material to all students (from 1st to 12th class of any board) irrespective of their background as our motto is “Education for Everyone”. It is also a very good platform for teachers who want to share their valuable knowledge.

Leave a Reply

Your email address will not be published. Required fields are marked *