如果没到时间,那么就继续循环。
如果到时间了,发音,然后退出循环。
稍微复杂一些的方法,使用Timer、启动线程的方法。
利用Visual C++设计一个闹钟程序,定时事件提醒等。本题目涉及使用设备上下文进行绘图和定时器的应用。功能要求:
1.表盘界面的显示,显示当前时间。
2.设置交互界面,用以设置时间信息和选择提示事件。
3.用户可以输入特定时间和选择播放声音或闪动指示灯来提醒用户。
4.具有秒表功能。
设计提示:
1.应用程序框架设计。
2.程序菜单设计。
3.程序对话框设计。
4.表盘绘图程序设计。
5.事件定时提醒功能设计。
#include<graphics.h>
#include<conio.h>
#include<math.h>
#include<dos.h>
#include<stdio.h>
void main()
{
int gd=DETECT,gm
int x=320,y=240,r=200,i,h,m,s,thetamin,thetasec
struct time t
char n[12][3]={"3","2","1","12","11","10","9","8","7","6","5","4"}
initgraph(&gd,&gm,"C:\Win-TC\bgi")//图形驱动器路径,根据自己的系统更换!
circle(x,y,210)
setcolor(4)
settextstyle(4,0,5)
for(i=0i<12i++)
{
if(i!=3)
outtextxy(x+(r-14)*cos(M_PI/6*i)-10,y-(r-14)*sin(M_PI/6*i)-26,n[i])
else
outtextxy(x+(r-14)*cos(M_PI/6*i)-20,y-(r-14)*sin(M_PI/6*i)-26,n[i])
}
gettime(&t)
printf("The current time is: %2d:%02d:%02d.%02d\n",t.ti_hour, t.ti_min,
t.ti_sec, t.ti_hund)
while(!kbhit())
{
setcolor(5)
setfillstyle(1,5)
circle(x,y,10)
floodfill(x,y,5)
gettime(&t)
if(t.ti_min!=m)
{
setcolor(0)
line(x,y,x+(r-60)*cos(thetamin*(M_PI/180)),y-(r-60)*sin(thetamin*(M_PI/180
)))
circle(x+(r-80)*cos(thetamin*(M_PI/180)),y-(r-80)*sin(thetamin*(M_PI/180))
,10)
line(x,y,x+(r-110)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-110)*sin(M_PI/6*h
-((m/2)*(M_PI/180))))
circle(x+(r-130)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-130)*sin(M_PI/6*h-(
(m/2)*(M_PI/180))),10)
}
if(t.ti_hour>12)
t.ti_hour=t.ti_hour-12
if(t.ti_hour<4)
h=abs(t.ti_hour-3)
else
h=15-t.ti_hour
m=t.ti_min
if(t.ti_min<=15)
thetamin=(15-t.ti_min)*6
else
thetamin=450-t.ti_min*6
if(t.ti_sec<=15)
thetasec=(15-t.ti_sec)*6
else
thetasec=450-t.ti_sec*6
setcolor(4)
line(x,y,x+(r-110)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-110)*sin(M_PI/6*h
-((m/2)*(M_PI/180))))
circle(x+(r-130)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-130)*sin(M_PI/6*h-(
(m/2)*(M_PI/180))),10)
line(x,y,x+(r-60)*cos(thetamin*(M_PI/180)),y-(r-60)*sin(thetamin*(M_PI/180
)))
circle(x+(r-80)*cos(thetamin*(M_PI/180)),y-(r-80)*sin(thetamin*(M_PI/180))
,10)
setcolor(15)
line(x,y,x+(r-70)*cos(thetasec*(M_PI/180)),y-(r-70)*sin(thetasec*(M_PI/180
)))
delay(1000)
setcolor(0)
line(x,y,x+(r-70)*cos(thetasec*(M_PI/180)),y-(r-70)*sin(thetasec*(M_PI/180
)))
}
}
//我已通过Turbo C++3.0编译,给分!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)