中易网

谁能帮我编一个C语言时钟啊

答案:2  悬赏:40  
解决时间 2021-04-27 14:54
设计一个时钟表盘,能及时读取系统的时间,并根据当前时间计算并绘制出在时钟表盘上时钟时针、分针和秒针的具体位置,形成时钟运转动画。要程序源代码和适当的注释,正规些的编程,谢谢了
最佳答案
#include<graphics.h>
#include<math.h>
#include<dos.h>
#define PI 3.1415926


//屏幕中心的坐标(640x480模式下)
#define mid_x 320
#define mid_y 240




int main()
{ int graphdriver=DETECT,graphmode;
int end_x,end_y;
struct time curtime;
float th_hour,th_min,th_sec;


initgraph(&graphdriver,&graphmode,"C:\\TC2"); //初始化VGA屏幕模式
setbkcolor(BLACK); //使用黑色的背景色
while(!kbhit(0)) //若有键盘输入,则跳出,即是结束程序
{ setcolor(GREEN); //把画笔设为绿色
circle(mid_x,mid_y,180); //钟的外圆
circle(mid_x,mid_y,150); //钟的内圆
circle(mid_x,mid_y,1); //画出钟的圆心
gettime(&curtime); //取得系统当前时间
th_sec=(float)curtime.ti_sec*0.1047197551; //把秒针的角度化为弧度,为以后绘制时方便,下同
th_min=(float)curtime.ti_min*0.1047197551+th_sec/60.0; //分针的弧度
th_hour=(float)curtime.ti_hour*0.5235987755+th_min/12.0; //时度的弧度,注意整时是12等分的,所时乘
的是3.14/180*5
//计算出时针的尾的坐标(时针长70)
end_x=mid_x+70*sin(th_hour);
end_y=mid_y-70*cos(th_hour);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y); //用红色线画出时针
//计算出分针坐标(分针长110)
end_x=mid_x+110*sin(th_min);
end_y=mid_y-110*cos(th_min);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y); //用红色画出分针
end_x=mid_x+140*sin(th_sec);
end_y=mid_y-140*cos(th_sec);
setcolor(RED);
line(mid_x,mid_y,end_x,end_y); //同上,画出秒针,长为140
//画出钟盘上的刻度,刻度长20
line(140,240,160,240); //9点对应的大刻度
line(320,60,320,80); //12点对应的大刻度
line(500,240,480,240); //3点的刻度
line(320,420,320,400); //6点的刻度
line(410,395.7,400,378.4); //5点
line(475.7,330,458.4,320); //4点
line(475.7,150,458.4,160); //2点
line(410,84.3,400,101.6); //1点
line(230,84.3,240,101.6); //11点
line(164.3,150,181.6,160); //10点
line(164.3,330,181.6,320); //8点
line(230,395.7,240,378.4); //7点
sleep(1000); //停止一秒
cleardevice(); //清除屏幕上的显示
}
closegraph(); //关闭VGA屏幕,即返回文本方式
return 0;
}

全部回答
全屏幕模拟时钟的c源程序*/ #include<graphics.h> #include<math.h> #include<dos.h> #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(0); circle(300,240,200); circle(300,240,205); circle(300,240,5); for(i=0;i<60;i++) {if(i%5==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)+240; line(x1,y1,x2,y2); } } main() { int x,y; int gd=VGA,gm=2; unsigned char h,m,s; struct time t[1]; initgraph(&gd,&gm,"d:\\tc"); init(); setwritemode(1); gettime(t); h=t[0].ti_hour; 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); while(!kbhit()) {while(t[0].ti_sec==s) gettime(t); sound(400); delay(70); sound(200); delay(30); nosound(); setcolor(4); d(190,s,6); 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; d(170,m,6); } if (t[0].ti_hour!=h) { setcolor(7); d(150,h,30); h=t[0].ti_hour; d(150,h,30); sound(1000); delay(240); nosound(); delay(140); sound(2000); delay(240); nosound(); } } getch(); closegraph(); }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
身高1.79米体重116斤穿多大尺码的衣服
小燕装饰设计家居生活馆在什么地方啊,我要过
眉心中间有根白色毛发怎么回事儿
〈 十几岁的、感情、到底、能有多真? 〉
dnf狱血魔神pk加点
代理记账公司是一种怎样的盈利模式
实况足球10与FIFA世界足球10兼容不`?
谁能给个《倩女幽魂Online》的激活码
弈城围棋给别人弈币,会要手续费的吗
如何可以把“听妈妈的话”唱好听
黄钻用完后空间主页等都还会在吗?
QQ空间里面用Q币买的背景音乐有时间限制吗?
xtr966液压碟刹
如何选择汽车香水?
为什么好友手机登陆在电脑上却看不到手机登陆
推荐资讯
网通好,还是电信的宽带好,在北方能自己装电
滑板摸式在哪?
《是美男》中的歌曲
西游记九九八十一难每难主要内容
包税免邮是什么意思
白虎牌膏药治尖翘炎吗
东西湖服务区-汽车维修我想知道这个在什么地
阿帕奇,好玩吗?只交30元,可以随便玩嘛?那
为什么这个文件发到我这里就不能用啊 ~~!
4.10是什么星座?
上线1小时怎么办
渴望在你幸福时同你一起微笑英语怎么说?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?