C++ Graphics program analog clock (Source Code)
/*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;
}
#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;
}