/*开发环境:turbo c 2.0模拟时钟转动程序代码*/ #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(1); circle(300,240,200); circle(300,240,205); circle(300,240,220);setcolor(YELLOW); circle(300,240,5); for(i=0;i<60;i++) /*划钟点上的短线*/ { if(i%5==0) l=15; else l=5; x1=200*sin(i*6*pi/180)+300; y1=200*cos(i*6*pi/180)+240; x2=(200-l)*sin(i*6*pi/180)+300; y2=(200-l)*cos(i*6*pi/180)+240; line(x1,y1,x2,y2); } } main() { int x,y,i,k=1; int gdriver=9,gmode=2; unsigned char h,m,s; int o,p,q; float n; struct time t[1]; struct date d[1]; initgraph(&gdriver,&gmode,"c://tc"); initgraph(&gdriver,&gmode,"c://tc"); for(i=0;i<=6;i++) { settextstyle(TRIPLEX_FONT,HORIZ_DIR,i); /*控制输出字符的字体,方向,大小*/ cleardevice(); settextjustify(1,1); /*在指定坐标上输出字符串*/ outtextxy(300,80,"XII") ; outtextxy(300,390,"VI"); outtextxy(140,230,"IX"); outtextxy(460,230,"III"); outtextxy(380,100,"I"); outtextxy(220,100,"X"); outtextxy(430,160,"II"); outtextxy(430,310,"IV"); outtextxy(380,370,"V"); outtextxy(220,370,"VII"); outtextxy(160,160,"X"); outtextxy(160,310,"VIII"); } init(); setwritemode(1); /*设置画线的输出模式*/ if(k!=0) { getdate(d); /*获得系统日期函数*/ o=d[0].da_year; p=d[0].da_mon; q=d[0].da_day; gettime(t); /*获得系统时间函数*/ h=t[0].ti_hour; m=t[0].ti_min; s=t[0].ti_sec; } setcolor(7); /*设置时针颜色*/ n=(float)h+(float)m/60; d(150,n,30); /*画出时针*/ setcolor(14); /*设置分针颜色*/ d(170,m,6); /*画出分针*/ setcolor(4); /*设置秒针颜色*/ d(190,s,6); /*画出秒针*/ while(!kbhit()) /*控制程序按下任意键退出*/ { while(t[0].ti_sec==s) gettime(t); gotoxy(44,18); /*使光标移动到指定坐标*/ printf("/b/b/b/b/b/b/b/b/b"); /*退格,使表示时间的字符串不断变化*/ sound(400); /*按给定的频率打开PC扬声器*/ delay(70); /*中断程序的执行,时间为70毫秒*/ sound(200); delay(30); nosound(); /*按给定的频率关闭PC扬声器*/ 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(); } if(s<10) /*用字符的形式输出时间*/ { if(m<10) printf("%u:0%u:0%u",h,m,s); else printf("%u:%u:0%u",h,m,s); } else { if(m<10) printf("%u:0%u:%u",h,m,s); else printf("%u:%u:%u",h,m,s); } gotoxy(35,19); /*在指定坐标上输出日期*/ printf("%d-%d-%d",o,p,q); printf("/b/b/b/b/b/b/b/b/b"); } getch(); closegraph(); }