📄 时钟程序.txt
字号:
/* 时钟程序 过五秒自动更换面板,钉钮,及是否有钟摆*/
#include "stdio.h"
#include "graphics.h"
#include "time.h"
#include "dos.h"
#include "math.h"
#include "stdlib.h"
#define PI 3.141592653
void main()
{
int gd=DETECT,gm,i,j,k;
float dsec,dmin,dhour;
struct time cur;
time_t t,tim;
void drsk0();
void drsk1();
void drsk2();
void skin0();
void skin1();
void skin2();
void skin3();
void drpendu0();
void drpendu1();
void drpot(float a,int l,int color);
void (*drs[3])(),(*skn[4])(),(*drpendu[2])();
drs[0]=drsk0,drs[1]=drsk1,drs[2]=drsk2;
skn[0]=skin0,skn[1]=skin1,skn[2]=skin2,skn[3]=skin3;
drpendu[0]=drpendu0,drpendu[1]=drpendu1;
/*registerbgidriver(EGAVGA_driver); */
initgraph(&gd,&gm,"");
setbkcolor(0);
for(i=0;i<3;i++)
{
cleardevice();
drs[i]();
for(j=0;j<4;j++)
{
skn[j]();
for(k=0,tim=time(NULL); k<2; )
{
t=time(NULL);
gettime(&cur);
dsec=cur.ti_sec;
dmin=cur.ti_min+dsec/60;
dhour=cur.ti_hour+dmin/60;
drpot(dsec*6,111,rand()%14+1);
drpot(dmin*6,88,rand()%14+1);
drpot(dhour*30,65,rand()%14+1);
while(difftime(time(NULL),t)<1) drpendu[k]();
drpot(dsec*6,111,0);
drpot(dmin*6,88,0);
drpot(dhour*30,65,0);
if (time(NULL)-tim>5){k++; tim=time(NULL);}
}
}
}
closegraph();
getch();
}
void drsk0() /*钉钮1*/
{
int a,i,x,y,x1,y1,t;
float b;
setcolor(13);
setfillstyle(0,14);
for(a=-300;a<3300;a+=300)
{ b=a/1800.0*PI;
x1=320+121*cos(b);
y1=140+121*sin(b);
circle(x1,y1,2);
circle(x1,y1,1);
}
}
void drsk1()/*钉钮2*/
{
int a,i,x,y,x1,y1;
float b;
setcolor(13);
for(a=-300;a<3300;a+=300)
{
b=a/1800.0*PI;
for(i=121;i>=114;i--)
{
x1=320+i*cos(b);
y1=140+i*sin(b);
circle(x1,y1,1);
}
}
}
void drsk2()/*钉钮3*/
{
int a,i,x1,y1,t;
float b;
setcolor(6);
for(a=-300;a<3300;a+=300)
{ b=a/1800.0*PI;
t=a%900?3:6;
for(i=-t;i<=t;i++)
{
x1=320+120*cos(b)+i;
y1=140+120*sin(b);
circle(x1,y1,1);
}
}
}
void skin0(){}
void skin1() /*方形面版*/
{
setcolor(10);
setlinestyle(0,1,3);
line(205,10,435,10);
line(205,270,435,270);
line(190,25,190,255);
line(450,25,450,255);
arc(205,25,90,180,15);
setlinestyle(0,1,3);
arc(435,25,0,90,15);
setlinestyle(0,1,3);
arc(435,255,270,360,15);
setlinestyle(0,1,3);
arc(205,255,180,270,15);
return ;
}
void skin2()/*圆形面板*/
{
int a,x,y,color[]={1,4,3,6,2,13};
float b;
for(a=-300;a<3300;a++)
{
b=a/1800.0*PI-PI/2;
x=320+126*cos(b);
y=140+126*sin(b);
setcolor(color[(a+300)/600]);
circle(x,y,2);
}
}
void skin3() /*方形加圆形面板*/
{
skin1();
skin2();
}
void drpot(float a,int l,int color)/*画指针*/
{
int x,y;
setlinestyle(0,1,3);
setcolor(color);
x=320+cos(a/180*PI-PI/2)*l;
y=140+sin(a/180*PI-PI/2)*l;
line(320,140,x,y);
}
void drpendu0(){}
void drpendu1()/*钟摆1*/
{
static float w=2*PI,A=15.0/180*PI;
static double t;
float b;
int x1,y1,x2,y2,m,n,x3,y3,x4,y4;
setlinestyle(0,1,1);
b=A*cos(w*t)+PI/2;
x1=320-133*tan(b-PI/2);
y1=273;
x2=320+230*cos(b);
y2=140+230*sin(b);
x3=320+270*cos(b);
y3=140+270*sin(b);
x4=320+290*cos(b);
y4=140+290*sin(b);
m=320+250*cos(b);
n=140+250*sin(b);
setcolor(1);
line(x1,y1,x2,y2);
circle(m,n,20);
line(x3,y3,x4,y4);
delay(2000);
setcolor(0);
line(x1,y1,x2,y2);
circle(m,n,20);
line(x3,y3,x4,y4);
t+=4e-3;
} /*虎成*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -