circle(490,240,40); circle(490,240,35); circle(490,240,30); circle(490,240,25); circle(490,240,20); circle(490,240,15); circle(490,240,10); circle(490,240,05); circle(490,240,1); }
clockhandle2() {
int k=0,count; setcolor(15);
gettime(t);/*取得系统时间,保存在time结构类型的数组变量中*/ h=t[0].ti_hour; m=t[0].ti_min;
x=50*sin((h*60+m)/360*PI)+320; /*时针的x坐标值*/ y=180-50*cos((h*60+m)/360*PI); /*时针的y坐标值*/ line(320,180,x,y);/*在电子表中绘制时针*/
x1=80*sin(m/30*PI)+320; /*分针的x坐标值*/ y1=180-80*cos(m/30*PI); /*分针的y坐标值*/ line(320,180,x1,y1); /*在电子表中绘制分针*/
digitclock(260,333,digithour(h)); /*在数字时钟中,显示当前的小时值*/ digitclock(305,333,digitmin(m)); /*在数字时钟中,显示当前的分钟值*/ setwritemode(1);
/*规定画线的方式,如果mode=1,则表示画线时用现在特性的线
与所画之处原有的线进行异或(XOR)操作,实际上画出的线是原有线与现在规定 的线进行异或后的结果。因此, 当线的特性不变, 进行两次画线操作相当于没有 画线,即在当前位置处清除了原来的画线*/
for(count=2;k!=ESC&&k!=TAB;){ /*开始循环,直至用户按下ESC键结束循环*/ setcolor(12);/*淡红色*/
sound(500);/*以指定频率打开PC扬声器,这里频率为500Hz*/ delay(700);/*发一个频率为500Hz的音调,维持700毫秒*/ sound(200);/*以指定频率打开PC扬声器,这里频率为200Hz*/ delay(300);
/*以上两种不同频率的音调,可仿真钟表转动时的嘀哒声*/ nosound(); /*关闭PC扬声器*/ s=t[0].ti_sec; m=t[0].ti_min; h=t[0].ti_hour;
x2=98*sin(s/30*PI)+320; /*秒针的x坐标值*/ y2=180-98*cos(s/30*PI); /*秒针的y坐标值*/ setlinestyle(0,0,1); line(320,180,x2,y2); /*绘制秒针*/
/*利用此循环,延时一秒*/
while(t[0].ti_sec==s&&t[0].ti_min==m&&t[0].ti_hour==h) { gettime(t);/*取得系统时间*/ if(bioskey(1)!=0){ k=bioskey(0);
count=keyhandle(k); } }
setcolor(15);
digitclock(353,333,digitsec(s)+1);/*数字时钟增加1秒*/
setcolor(12); /*淡红色*/ x2=98*sin(s/30*PI)+320; y2=180-98*cos(s/30*PI); line(320,180,x2,y2);
/*用原来的颜色在原来位置处再绘制秒针,以达到清除当前秒针的目的*/
/*分钟处理*/
if(t[0].ti_min!=m){ /*若分钟有变化*/ /*消除当前分针*/ setcolor(15); /*白色*/ x1=80*sin(m/30*PI)+320; y1=180-80*cos(m/30*PI); line(320,180,x1,y1); /*绘制新的分针*/ m=t[0].ti_min;
digitclock(305,333,digitmin(m)); /*在数字时钟中显示新的分钟值*/ x1=80*sin(m/30*PI)+320; y1=180-80*cos(m/30*PI);
line(320,180,x1,y1); }
/*小时处理*/
if((t[0].ti_hour*60+t[0].ti_min)!=(h*60+m)){ /*若小时数有变化*/ /*消除当前时针*/ setcolor(15); /*白色*/
x=50*sin((h*60+m)/360*PI)+320;/*50:时钟的长度(单位:像素),320:圆心的x
坐标值*/
y=180-50*cos((h*60+m)/360*PI); line(320,180,x,y); /*绘制新的时针*/ h=t[0].ti_hour;
digitclock(260,333,digithour(h)); x=50*sin((h*60+m)/360*PI)+320; y=180-50*cos((h*60+m)/360*PI); line(320,180,x,y); } } }
第5章 总结
本次课程设计用到了很多陌生的函数,如:line(),circle(),setcolor(),settime()等,但是通过自己细心地分析,在老师的耐心指导下,我很快学会了许多没见过的函数。这次课程设计就如同上了一次c语言的课,在设计过程中学到很多书本上学不到的知识。真正的学习过程是在实践中不断地摸索,不断地前进中学习的,在实践中可以发现一些现实的问题,可以遇见一些突发情况。在实践中运用知识,既增强了我们的动手能力,同时也锻炼了我们的思维方式以及解决问题的能力。
通过本次课程设计,使我掌握了如何设计一个程序,如何处理程序设计过程中出现的问题。虽然设计过程中出现很多问题,但是努力去思考,努力去攻克,没有设计不出来的程序,没有攻克不了的难题。C语言是一个功能强大的计算机语言,学会c语言可以为我们以后的发展铺平道路。这次实地上机操作,给了我们一份体验,让我们体会到了在程序编写过程中所遇到的难题,同时也激励我们继续在实践中学习c语言,为以后开发出功能强大的软件积累经验。
最后非常感谢刘老师对我的精心指导!