Los expertos en lenguaje C lo explicarán
#includelt;graphics.hgt;
#includelt;math.hgt;
#includelt;dos.hgt; definir pi 3.1415926
#define X (a, b, c) x=a*cos(b*c*pi/180-pi/2)
#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()/* función de dibujo*/
{int i, l, x1, x2, y1, y2;
setbkcolor(0); /* Establece el color de fondo en negro (el valor del color es 0)*/
circle(300, 240). , 200); /* La razón es que el tamaño de la pantalla es 640x480, por lo que establecer las coordenadas puede hacer que el círculo se acerque al centro de la pantalla*/
circle(300, 240, 205); * Dibuje un círculo concéntrico con un radio de 205 para crear una esfera de reloj con una sensación tridimensional*/ < 480/640 se convierte en una salida casi circular*/
line(295, 60, 300, 80);
línea(295, 80, 300, 60);
línea(302, 60, 302, 80); 304, 60, 302, 80);
línea(304, 60, 304, 80);
línea(301, 60, 305, 60); 301, 80, 305, 80);
line(468, 230, 468, 250); /* Dibuja el siguiente gráfico "III" */
line(473, 230). , 473, 250);
línea(478, 230, 478, 250);
línea(467, 230, 479, 230); (467, 250, 479, 250);
p>
line(294, 400, 297.420); /* Dibuja el gráfico "VI" debajo */
line); (297, 420, 300, 400);
línea (303, 400, 303, 420);
línea (302, 400, 304, 400);
línea (302, 420, 304, 420);
línea(302, 420, 304, 420);
línea(125, 230, 135, 250); /* Dibuja el siguiente gráfico "IX" */
line(125, 250, 135, 230
line(122, 230, 122, 250); >
línea(121, 230, 123.230);
línea(121, 250, 123, 250);
for(i=0;ilt;60;i) /* Dibuja 60 escalas con una longitud de 5 en el dial, cada escala representa 1 minuto*/
{if(i5==0) l=15 /* Cada 5 tic representa una hora completa.
La longitud es 1 */
else l=5;
x1=200*cos(i*6*pi/180) 300 /* Utilice la forma de ecuación paramétrica del círculo para determinar Las coordenadas del punto inicial de cada escala*/
y1=200*sin(i*6*pi/180)
x2=(200-l) * cos(i* 6*pi/180) 300 /* También determine las coordenadas del punto final*/
y2=(200-l)*sin(i*6*pi/180) 240; /p>
line(x1, y1, x2, y2);/* Dibuja una línea recta desde el punto inicial hasta el punto final para representar cada escala*/
}
}
}
main()
{
int x, y
int gd; =VGA, gm=2; /* Utilice el modo de unidad VGA, el modo de visualización es 2 (resolución VGAHI 640×480 16 colores) */
unsigned char h, m, s /* Definir tiempo de carácter Minutos; , Segundos, personalmente creo que deberíamos usarlo Definirlo como int en lugar de char */
struct time t[1] /* Definir t[1] como una estructura de tiempo*/
;initgraph(amp; gd, amp; gm, "d. d:\tc"); /* Inicializar, configurar la pantalla para que funcione en modo gráfico, con los parámetros "d:\tc" y "d:\ tc". \tc "El controlador especificado se almacena en la carpeta d:\tc*/
init() /* Llama a la función de dibujo*/
setwritemode(1) /* Establece el modo de salida para dibujar líneas en modo gráfico, en este caso modo 1 (modo heterogéneo) */
gettime(t);/* Llama para obtener la hora actual en formato DOS y almacenarla. en t En la estructura el tiempo apunta a */
h=t[0].ti_hour; /* la hora se cambia a h */
m=t[0]. ti_min; /* minuto Cambiar a m */
s=t[0].ti_sec; /*Segundos a s */
setcolor(7); color a gris claro (color El valor es 7)*/
d(150, h, 30); /* Dibuja la manecilla de hora del reloj en gris claro, por lo que la posición del reloj. La manecilla de la hora también cambiará. El punto inicial del segmento de la manecilla de la hora es el centro del dial (300, 30).
center(300, 240) */
setcolor(14); /* Establece el color del dibujo en amarillo AMARILLO (el valor del color es 14) */
d(170, m, 6 ); /* Dibuja el minutero en amarillo, m cambia, por lo que el minutero cambiará su posición, y el punto inicial del segmento del minutero también es el punto central del dial (300, 240) */ p>
setcolor(14);/ * Establece el color de dibujo en amarillo AMARILLO (el valor del color es 14) */
d(170, m, 6 /* Dibuja el minutero); amarillo, m está cambiando, por lo que la posición del minutero también cambiará. El punto inicial del segmento del minutero también es el punto central del dial (300, 240) */ <
setcolor( 4); /* Establece el color del dibujo en rojo (el valor del color es 4) */
d(190, s, 6); La posición del segundero también cambiará, y el punto inicial del segmento del segundero también es el punto central del dial (300, 240) */
while(!kbhit( ))/* Presione cualquier tecla para finalizar el siguiente bucle*/
{ while(t[0].ti_sec==s)/* Si el tiempo convertido - segundos Igual al entero s */
gettime(t); /* Llama a la función gettime para obtener la hora del sistema */
sound(400); /* Llama a la función de sonido para que el altavoz emita una frecuencia de 400 Hz (20-20 000 Hz). sonido*/
delay(70); /* Retraso 70 milisegundos*/
sound(200); /* Envía el sonido nuevamente con una frecuencia de 200 Hz Sonido*/
delay(30); /* Retraso 30 milisegundos*/
nosound(); /* nosound(); /* gettime(t); */
sound(400); /* llama a gettime para obtener la hora del sistema nosound() /* apaga el altavoz*/
setcolor(4); El color del dibujo es rojo (el valor del color es 4)*/
d(190, s, 6 /*Redibujar el segundero*/
s=t[0] .ti_sec ; /* gettime obtiene la hora del sistema convertida en segundos */
s=t[0].s */
d(190, s, 6); Vuelve a dibujar el segundero, que cambia de posición cada segundo*/
if (t[0].ti_min! =m)/* Si el minuto de tiempo calculado por la hora del sistema obtenido por gettime es diferente del m anterior, significa que el segundero ha pasado 60, y el minuto de tiempo debe aumentarse en 1 para sincronizarse con la hora del sistema* /
{/* minutos La posición debe cambiar a medida que aumenta el valor de los minutos*/
setcolor(14);
d(170, m, 6); >
m= t[0].ti_min; /* Divide el tiempo real actual por m al mismo tiempo */
d(170, m, 6); posición de la mano. }
if (t[0].ti_hour!=h)/* Si la hora calculada por gettime no coincide con la h anterior, significa que el minutero se ha marcado con 60 y el la hora debe aumentarse en 1 para que se sincronice con la hora del sistema*/
{ setcolor(7);/* Establezca el color del dibujo y dibuje la posición original de la manecilla de la hora.
Establezca el color de dibujo para dibujar la posición original de la manecilla de la hora*/
d(150, h, 30);
h=t[0].ti_hour; cambiar la hora actual La hora está asignada a h */
d(150, h, 30 /*Dibuja la posición actual de la manecilla de hora*/
sound(); 1000); /* Enviar una frecuencia de sonido de 1000 Hz*/
delay(240); /* Retraso 240 milisegundos*/
nosound() /* Apagar el altavoz* /
delay(140) ; /* Retraso 140 milisegundos */
sound(2000); /* 2000Hz sonido*/
delay(140); /* Retraso 140 milisegundos*/
delay(140); /* Retraso 140 milisegundos*/
sound(2000); /* 2000Hz sonido*/
delay(240); /* Retraso 240 milisegundos* /
nosound() /* Apagar el altavoz*/
settextstyle(0, 1, 1); p>
outtextxy(300, 420, "XII ");/* Genera el texto mostrado XII a partir de las coordenadas (300, 420). Debido a que XII se dibujó arriba, esta oración y la oración anterior son redundantes y deben eliminarse. */
} p>
}
}
getch();
closegraph(); p>
}