# Graphics Program in C++ for Analog Clock

Analog Clock is mini project in a C ++ language. It is graphics application using graphic library <graphics.h>.

This program is Compiled using Turbo C++. Here is the source code of this program in C++ using Graphics.

/*Program for analog CLock*/

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <string.h>

#include <graphics.h>

#include <time.h>

#include <dos.h>

void minSecPos(int xrad, int midx, int midy, int x[60], int y[60])

{

int i, j=45;

for (i=360; i>=0; i=i-6)

{

x[j] = midx-(xrad*cos((i*3.14)/180));

y[j–] = midy-(xrad*sin((i*3.14)/180));

j = (j==-1)?59:j;

}

return;

}

void calcPoints(int radius, int midx, int midy, int x[12], int y[12])

{

int x1, y1;

x[0] = midx, y[0] = midy-radius;

x[6] = midx, y[6] = midy+radius;

x[3] = midx+radius, y[3] = midy;

x[9] = midx-radius, y[9] = midy;

x1 = (int) ((radius/2)*sqrt(3));

y1 = (radius/2);

x[2] = midx+x1, y[2] = midy-y1;

x[4] = midx+x1, y[4] = midy+y1;

x[8] = midx-x1, y[8] = midy+y1;

x[10] = midx-x1, y[10] = midy-y1;

x1 = radius/2;

y1 = (int) ((radius/2)*sqrt(3));

x[1] = midx+x1, y[1] = midy-y1;

x[5] = midx+x1, y[5] = midy+y1;

x[7] = midx-x1, y[7] = midy+y1;

x[11] = midx-x1, y[11] = midy-y1;

return;

}

int main() {

int gd=DETECT, gm, err, tmp;

initgraph(&gd, &gm, “C:\\tc\\bgi”);

int i, j, midx, midy, radius, hr, min, sec;

int x[12], y[12], minx[60], miny[60];

int hrx[12], hry[12], secx[60], secy[60];

int secx1, secy1;

char str[256];

time_t t1;

struct tm*data;

err = graphresult();

if (err != grOk)

{

printf(“Graphics Error: %s”,

grapherrormsg(err));

return 0;

}

midx = getmaxx()/2;

midy = getmaxy()/2;

radius = 200;

calcPoints(radius-30, midx, midy, x, y);

calcPoints(radius-90, midx, midy, hrx, hry);

minSecPos(radius-50, midx, midy, minx, miny);

minSecPos(radius-70, midx, midy, secx, secy);

while (!kbhit())

{

setlinestyle(SOLID_LINE, 1, 3);

settextstyle(GOTHIC_FONT, 0, 3);

circle(midx, midy, radius);

for (j=0; j<12; j++)

{

if (j==0)

{

sprintf(str, “%d”, 12);

} else {

sprintf(str, “%d”, j);

}

settextjustify(CENTER_TEXT, CENTER_TEXT);

moveto(x[j], y[j]);

outtext(str);

}

t1 = time(NULL);

data = localtime(&t1);

sec = data->tm_sec % 60;

line(midx, midy,

[sec], secy[sec]);

min = data->tm_min % 60;

line(midx, midy, minx[min], miny[min]);

hr = data->tm_hour % 12;

line(midx, midy, hrx[hr], hry[hr]);

delay(1000);

cleardevice();

}

getch();

closegraph();

return 0;

}

**For any query or issue, feel free to discuss on http://discuss.eduguru.in**