#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
}
/*全屏幕模拟时钟的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=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()) /*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()/*关闭源粗图形系统*/
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)