#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(BLUE)//这里应该是打错,停止一秒,应为sleep(1000)
cleardevice()//清除屏幕上的显示
}
closegraph()//关闭VGA屏幕,即返回文本方式
return 0
}
#include<graphics.h>/* 引入graphic.h */#include<math.h> /* 引入math.h */
#include<dos.h> /* 引入dos.h */
#define pi 3.1415926 /*定义pi=3.14159*/
#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,5)
for(i=0i<60i++) /*循环(算时间)*/
{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)/*C语言中得到时间的函数*/
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()
}
具体的。。就是套用用几个函数算时间。。
不要对这种很长的东西害怕,其实大部分都是在画这个钟~
加油哦~