Reloj programado en lenguaje C
Te doy 2 opciones, ambas son originales:
La primera:
#includelt;graphics.hgt;
#includelt ;math.hgt;
#includelt;dos.hgt;
#define pi 3.1415926
#define X(a,b,c) x =a *cos(b*c*pi/180-pi/2) 300;
#define Y(a, b, c) y=a*sin(b*c*pi/180-pi/ 2) 240;
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y )
void init()
{int i, l, x1, x2, y1, y2
setbkcolor(1); 300, 240, 200);
círculo(300, 240, 205);
círculo(300, 240, 5); 0;ilt;60;i)
{if(i5==0) l=15;
else l=5;
x1=200* cos(i*6*pi/180) 300;
y1=200*sin(i*6*pi/180) 240;
x2=(200 -l)* cos(i*6*pi/180) 300
y2=(200-l)*sin(i*6*pi/180)
línea(x1, y1, x2, y2);
}
}
principal()
{
int x , y;
int gd=VGA, gm=2;
unsigned char h, m, s;
tiempo de estructura t[1 ]; p>
initgraph(amp; gd, amp; gm, "d:\\tc");
init()
setwritemode(1)
gettime(t);
h=t[0].ti_hora
m=t[0].ti_min
s=; t[0].ti_sec;
setcolor(7);
d(150, h, 30);
setcolor(14);
d(170, m, 6);
setcolor(4);
d(190, s, 6);
mientras( !kbhit())
{ while(t[0].ti_sec==s)
gettime(t);
sonido( 400); /p>
retraso(70);
sonido(200);
retraso(30);
nosound();
setcolor(4);
d(190, s, 6);
p> s=t[0].ti_sec;
d(190, s, 6);
if (t[0].ti_min!=m)
{
setcolor(14);
d(170, m, 6);
m=t[0].ti_min
p> p>d(170, m, 6);
}
si (t[0].ti_hour!=h)
{ setcolor (7);
d(150, h, 30);
h=t[0].ti_hour
d(150, h; , 30 );
sonido(1000);
retraso(240);
sin sonido(); ;
sonido(2000);
retraso(240);
nosound(); > }
getch();
closegraph();
}
Segundo:
#includelt ;graphics.hgt;
#includelt;math.hgt;
#includelt;dos.hgt;
#define PI 3.1415926
#define x0 320 /*Define las coordenadas del centro del reloj*/
#define y0 240
void DrawClock(int x, int y, int color) /*Dibuja el dial* /
{ int r=150; /*radio del dial*/
float th;
setcolor(color);
círculo( x, y, r);
círculo(x, y, 2);
}
void DrawHand(int x, int y, float th, int l, int color)
{
int x1, y1
x1=x l*sin(th); p> y1 =y-l*cos(th);
setcolor(color);
line(x, y, x1, y1);
}
void main()
{int gdriver=DETECT, gmode;
struct time curtime;
float th_hour, th_min, th_sec;
initgraph(amp; gdriver, amp; gmode, "");
setbkcolor(0);
while(! kbhit())
{
DrawClock(x0, y0, 14);
gettime(amp; curtime /*Obtener la hora actual del sistema*/
gotoxy(35, 20); /*Ubicar la posición de salida*/
if((float)curtime.ti_hourlt;=12) /*Procesando antes del mediodía*/
{printf ( "AM ");
if((float)curtime.ti_hourlt; 10) printf("0"); /*Agregar cero antes de las diez*/
printf ("0f:", (float)curtime.ti_hour);
}
else /*Procesamiento por la tarde*/
{printf(" PM " );
if((float)curtime.ti_hour-12lt;10) printf("0");
printf(".0f:", (float)curtime .ti_hour -12);
}
if((float)curtime.ti_minlt;10) printf("0");
printf(". 0f: ", (float)curtime.ti_min);
if ((float)curtime.ti_seclt; 10) printf("0");
printf(".0f" , ( float)curtime.ti_sec);
/*Las siguientes tres líneas calculan el ángulo de rotación de la manecilla del reloj, comenzando desde la vertical hacia arriba, y en el sentido de las agujas del reloj es positivo*/
th_sec=( float )curtime.ti_sec*0.1047197551; /*2π/60=0.1047197551*/
th_min=(float)curtime.ti_min*0.1047197551 th_sec/60.0; curtime .ti_hour*0.523598775 th_min/12.0; /* 2π/12=0.5235987755 */
DrawHand(x0, y0, th_hour, 70, 2) /*Dibujar manecilla de hora*/
<); p> DrawHand(x0, y0, th_min, 110, 3); /*Minuto mano*/DrawHand(x0, y0, th_sec, 140, 12); >
sleep(1); /*Actualizar después de un segundo de retraso*/
cleardevice();
}
closegraph(); p>
}