¿Cómo hacer un reloj en lenguaje C?
Muy bien
#Contiene "stdio.h"
#Contiene "graphics.h"
#Contiene "math.h" " ”
#Contiene “time.h”
#Contiene “dos.h”
#Definición 200 rand
#Definición pi 3.1415926
#Definición X(a, b, c) c), reemplácelo con b * c * pi/180-pi/2) 240; * PI/180-PI/2) 240 Cuando encuentre Y (a, B, C); reemplace * /
#Define d(a, b, c) X(a, b, c); Y(a, b, c); line(300, 240, x, y) /* macro Una definición no es una descripción ni una declaración, por lo que no es necesario agregar símbolos al final de la línea. Si agrega un punto y coma, incluso el punto y coma se reemplazará */
/*
Entonces, cuando se ejecuta d(200, 12, 6), equivale a escribir tres oraciones .
Primero encuentre X(a, b, c), es decir, X(200, 12, 6), y luego calcule.
En otras palabras, el radio calculado es 200, el grado es 12 y el tamaño del paso es 6 (en realidad 72 grados, pero aquí se resta pi/2, es decir, 72-45=27 grados ).
La abscisa del punto es también el valor de x.
Luego ejecuta Y(a, b, c), es decir, Y(200, 12, 6). En este momento, calcule y = 200 * sin(12 * 6 * pi/180-pi/2) 240.
En otras palabras, el radio calculado es 200, el grado es 12 y el tamaño del paso es 6 (en realidad 72 grados, pero aquí se resta pi/2, es decir, 72-45=27 grados ).
La ordenada del punto también es el valor de y
La última es la línea (300, 240, x, y), lo que significa dibujar una línea para dejar salir el puntero. .
Entonces, el primer parámetro aquí es establecer la longitud del radio, el segundo parámetro es establecer el grado y el tercer parámetro es establecer el tamaño del paso (grado).
*/
main()
{
int x=300, y=240, bx, por, bx1, por1 , bx2, by2, bx3, by3, jd, I, j, k, h1, m1, hc=0, l, ax, ay, n, p = 0;
char b[]={ 'Amo ', ' ', ' ', ' ', ' ', ' ', ' ' Y ', ' o ', ' u ' };
int driver=VGA, mode = VGAHI/*Definir controlador de gráficos*/
int h, m, s ; /*Definir hora, hora, minuto, segundo*/puntero*/
Estructura tiempo t[1];/*Definir un array con una estructura llamada tiempo, con un solo miembro t[0]* /
init graph(& driver amp mode, ""; /*Configura el controlador de gráficos*/
setbkcolor(0); /*Configura el color de fondo en negro*/ p>
for(n = 0; n lt=27; n )
printf(" \ n ");
for(n = 0; n lt =29) ; n )
printf(" ");
set color(14) /*Establece el color de primer plano en amarillo*/
Círculo ( x, y, r); /*Dibuja un círculo grande con un radio de 300, 240 y un radio de 200*/
set color(12); /*Establece el color de primer plano en magenta*/ p>
Circle(x,y,190);/*Pequeño círculo dentro*/
/*Establecer estilo y color de relleno*/
setfillstyle(SOLID_FILL, 14) ;/ *Relleno sólido*/
floodfill(x, y, 12); /*El color de relleno del dial relleno es magenta (12) */
setfillstyle(SOLID_FILL, 13); /*Relleno sólido*/
Relleno difuso (1, 1, 14);
establecer color (2);
/*Dibujar un centro de mesa*/
circle(x, y, 2); /*Un pequeño círculo en el centro de la mesa*/
circle(x); , y, 5);/ *Círculo grande con centro*/
/*Ojo*/
Elipse (x-80, y-70, 0, 360, 23, 65 ); /*elipse exterior izquierda* /
Elipse (x 80, y-70, 0, 360, 23, 65); /*elipse exterior derecha*/
Elipse ( x-80, y-60, 0, 180, 23, 23); /*Elipse interior izquierda*/
setfillstyle(SOLID_FILL, 0); /*El color de relleno del color sólido es negro*/ p>
Relleno difuso(x -80, y-60, 2); /*El color de relleno es verde*/
Elipse (x 80, y-60, 0, 180, 23, 23); /*Elipse interior derecha*/
setfillstyle(SOLID_FILL, 0); /*El color de relleno sólido es negro*/
Relleno de inundación (x 80, y-70, 2); /*El color de relleno es verde*/ /
/* outtextxy(225,380, "incrustado 06241 quince");
outtextxy(245,400, "Hecho en China"); */
/*Seis Barbas*/
establecer color(
5); /*rosa*/
Línea (x-120, y 70, x-250, y 90);
Línea (x-120, y 90, x- 250, y 110);
Línea (x-120, y 110, x-250, y 130);
Línea (x 120, y 70, x 250, y 90 );
Línea (x 120, y 90, x 250, y 110);
Línea (x 120, y 110, x 250, y 130);
/*Dibujar orejas*/
Arco (150, 80, 0, 360, 60); /*Dibujar arco (aquí se puede usar un círculo)*/
setfillstyle(SOLID_FILL, 14); /*El color de relleno es amarillo*/
Relleno (150, 80, 5);
Arco (450, 80, 0, 360, 60);
setfillstyle(SOLID_FILL, 14);
Relleno de inundación (450, 80, 5);
establecer color (14); trazas de arco interno*/
Arco (150, 80, 0, 360, 60);
Arco (450, 80, 0, 360,
p); >/*Dibujar una boca*/
set color(0);
Elipse (x, y 60, 160, 340, 23, 23); una boca con un arco*/
/*Dibuja un contorno*/
Círculo (x 120, y 10, 23 /*El color de primer plano es un círculo con 0 lados); */ /
setfillstyle(SOLID_FILL, 12); /*El color de relleno sólido es 12 magenta claro*/
floodfill(x 120, y 10, 0); borde Los colores del centro y el borde blanco 0 rellenan la forma cerrada */
set color(14 /*Establece el color de primer plano en amarillo para eliminar rastros de arcos internos*/
Circle (x 120, y 10, 23); /*Dibuja otro círculo pequeño*/
set color(0); /*El color de primer plano es un círculo con lado 0*/
Círculo (x-120, y 10, 23); /*Lo mismo que arriba*/
setfillstyle(SOLID_FILL, 12);
Sobrellenado (x-120, y 10, 0 );
establecer color(14);
Círculo (x-120, y 10, 23);
Elipse (x, y 60); , 0, 180, 23, 23);
for(I = 0; I lt60; i )
{ si (I 5 = = 0)l = 15 p>
else l = 5;
ax = 200 * cos(I * 6 * pi/180) 300;
ay = 200 * sin(I * 6 * pi/180 ) 240;
bx =(200-l)* porque(I * 6 * pi/180) 300
por =(200-l)* sin( I * 6 * pi/180) 240;
line(ax, ay, bx, por
}
setwritemode(1); Esta oración Invencible*/
gettime(t);/*El tiempo del sistema para obtener la matriz T en realidad se da a t[0]*/
h=t[0] .
ti _ hora/*El valor de la manecilla de hora se da como h*/
m=t[0]. ti _ min/*valor minuto a m*/
s=t[0]. ti _ sec
/* Valor de segunda mano de s*/
set color(7 /*Establece el color de primer plano en 7 gris claro*/
<); p>/ *El primer parámetro es establecer la longitud del radio, el segundo parámetro es establecer el grado inicial y el tercer parámetro es establecer el tamaño del paso (grados)*/d(150, h, 30);/ * Tome 150 como radio, H como grado inicial, la longitud del paso es 30 grados, la manecilla de hora siempre es * * * Primero haga un círculo y luego vaya a 12 */
set color(14); /*Establece el color del minutero 1 azul*/
d(170, m, 6) /*Con radio 170, m como grado inicial, longitud de paso 6); grados, el minutero se mueve 60 veces*/
set color(4);/*Establece el color del segundero 4 rojo*/
d(190, s, 6);/* Utilice un radio de 190, s como grado inicial y la longitud del paso es de 6 grados, la manecilla de segundos se mueve 60 veces en una semana*/
Y (!Khit ())/*Se realiza un bucle cuando no se escribe el teclado*/
{
Mientras(t[ 0]). ti_sec==s) /*Juzgue si la hora actual del sistema es igual a la segunda hora recién obtenida, debe ser igual, la hora del sistema no se actualiza*/
gettime(t);
set color(4);
d(190, s, 6); /*Así que actualiza la hora del sistema*/
s=t[0]. ti _ sec
setfillstyle(SOLID_FILL, 13); /*Relleno sólido*/
Desbordamiento (1, 380, 14);
If (p lt); =15)
{ setbkcolor(HC); printf("c ", b[p]);}
Otros
setbkcolor(0); /p>
p;
set color(4);/*Establece el color del segundero en 2 verde*/
d(190, s, 6) ;
if (t[0].ti_min!=m) /*Juzga si el tiempo actual del sistema (minutos) es igual a los puntos recién obtenidos*/
{ p>
establecer color(14);
d(170, m, 6);
m=t[0]. ti _ min
d(170, m, 6);
}
if (t[0].ti_hour!=h)
{
establecer color(7);
d(150, h, 30);
h=t[0].
ti _ hora
d(150, h, 30);
}
establecer color(hc); ==12)
HC = 0;
Elipse (300, 300, 160, 340, 23, 23);
/*ojos*/
Elipse (220, 170, 0, 360, 23, 65);
Elipse (380, 170, 0, 360, 23, 65); Elipse (220, 180, 0, 180, 23, 23);
Elipse (380, 180, 0, 180, 23, 23); 20, 250, 59);
Arco (450, 80, -70, 165, 59);
}
getch(); >
p>
}