本文实例为大家分享了C语言实现实时钟表的具体代码,供大家参考,具体内容如下
一、最终效果展示
效果图如下:
二、绘制静态秒针
代码如下:
#include<graphics.h>
#include<conio.h>
#include<math.h>
#define High 480 //游戏画面尺寸
#define Width 640
int main(void)
{
initgraph(Width,High);//初始化绘图窗口
int center_x,center_y;//中心点的坐标,也是钟表的坐标
center_x=Width/2;
center_y=High/2;
int secondLength;//秒针的长度
secondLength=Width/5;
int secondEnd_x,secondEnd_y;//秒针的终点
secondEnd_x=center_x+secondLength;
secondEnd_y=center_y;
//画秒针
setlinestyle(PS_SOLID,2);//画实线,宽度为两个像素
setcolor(WHITE);
line(center_x,center_y,secondEnd_x,secondEnd_y);
getch();
closegraph();//关闭绘图窗口
return 0;
}
效果图如下:
三、绘制动态秒针
代码如下:
#include<graphics.h>
#include<conio.h>
#include<math.h>
#define High 480 //游戏画面尺寸
#define Width 640
#define PI 3.14159
int main(void)
{
initgraph(Width,High);//初始化绘图窗口
int center_x,center_y;//中心点的坐标,也是钟表的坐标
center_x=Width/2;
center_y=High/2;
int secondLength;//秒针的长度
secondLength=Width/5;
int secondEnd_x,secondEnd_y;//秒针的终点
float secondAngle=0;//秒针对应的角度
while(1)
{
//由角度决定的秒针终点坐标
secondEnd_x=center_x+secondLength*sin(secondAngle);
secondEnd_y=center_y-secondLength*cos(secondAngle);
//画秒针
setlinestyle(PS_SOLID,2);//画实线,宽度为两个像素
setcolor(WHITE);
line(center_x,center_y,secondEnd_x,secondEnd_y);
Sleep(1000);//1秒
setcolor(BLACK);
line(center_x,center_y,secondEnd_x,secondEnd_y);//隐藏前一帧的秒针
//秒针角度的变化
secondAngle=secondAngle+2*PI/60;
//一圈一共2*PI,一圈60秒,一秒钟秒针走过的角度为2*PI/60
}
getch();
closegraph();//关闭绘图窗口
return 0;
}
效果图如下:
四、根据实际时间转动秒针
代码如下:
#include<graphics.h>
#include<conio.h>
#include<math.h>
#define High 480 //游戏画面尺寸
#define Width 640
#define PI 3.14159
int main(void)
{
initgraph(Width,High);//初始化绘图窗口
int center_x,center_y;//中心点的坐标,也是钟表的坐标
center_x=Width/2;
center_y=High/2;
int secondLength;//秒针的长度
secondLength=Width/5;
int secondEnd_x,secondEnd_y;//秒针的终点
float secondAngle=0;//秒针对应的角度
SYSTEMTIME ti;//定义保存当前时间的变量
while(1)
{
GetLocalTime(&ti);//获取当前时间
//秒针角度的变化
secondAngle=ti.wSecond*2*PI/60;
//一圈一共2*PI,一圈60秒,一秒钟秒针走过的角度为2*PI/60
//由角度决定的秒针终点坐标
secondEnd_x=center_x+secondLength*sin(secondAngle);
secondEnd_y=center_y-secondLength*cos(secondAngle);
//画秒针
setlinestyle(PS_SOLID,2);//画实线,宽度为两个像素
setcolor(WHITE);
line(center_x,center_y,secondEnd_x,secondEnd_y);
Sleep(1000);//1秒
setcolor(BLACK);
line(center_x,center_y,secondEnd_x,secondEnd_y);//隐藏前一帧的秒针
}
getch();
closegraph();//关闭绘图窗口
return 0;
}
五、添加时针分针
代码如下:
#include<graphics.h>
#include<conio.h>
#include<math.h>
#define High 480 //游戏画面尺寸
#define Width 640
#define PI 3.14159
int main(void)
{
initgraph(Width,High);//初始化绘图窗口
int center_x,center_y;//中心点的坐标,也是钟表的坐标
center_x=Width/2;
center_y=High/2;
int secondLength=Width/7;//秒针的长度
int minuteLength=Width/6;//分针的长度
int hourLength=Width/5;//时针的长度
int secondEnd_x,secondEnd_y;//秒针的终点
int minuteEnd_x,minuteEnd_y;//分针的终点
int hourEnd_x,hourEnd_y;//时针的终点
float secondAngle=0;//秒针对应的角度
float minuteAngle=0;//分针对应的角度
float hourAngle=0;//时针对应的角度
SYSTEMTIME ti;//定义保存当前时间的变量
while(1)
{
GetLocalTime(&ti);//获取当前时间
//秒针角度的变化
secondAngle=ti.wSecond*2*PI/60;
//一圈一共2*PI,一圈60秒,一秒钟秒针走过的角度为2*PI/60
//由角度决定的秒针终点坐标
//分针角度的变化
minuteAngle=ti.wMinute*2*PI/60;
//一圈一共2*PI,一圈60分,一分钟秒针走过的角度为2*PI/60
//时针角度的变化
hourAngle=ti.wHour*2*PI/12;
//一圈一共2*PI,一圈12时,一小时时针走过的角度为2*PI/12
//由角度决定的秒针终点坐标
secondEnd_x=center_x+secondLength*sin(secondAngle);
secondEnd_y=center_y-secondLength*cos(secondAngle);
//由角度决定的分针终点坐标
minuteEnd_x=center_x+minuteLength*sin(minuteAngle);
minuteEnd_y=center_y-minuteLength*cos(minuteAngle);
//由角度决定的时针终点坐标
hourEnd_x=center_x+hourLength*sin(hourAngle);
hourEnd_y=center_y-hourLength*cos(hourAngle);
//画秒针
setlinestyle(PS_SOLID,2);//画实线,宽度为两个像素
setcolor(WHITE);
line(center_x,center_y,secondEnd_x,secondEnd_y);
//画分针
setlinestyle(PS_SOLID,4);//画实线,宽度为4个像素
setcolor(BLUE);
line(center_x,center_y,minuteEnd_x,minuteEnd_y);
//画时针
setlinestyle(PS_SOLID,6);//画实线,宽度为6个像素
setcolor(RED);
line(center_x,center_y,hourEnd_x,hourEnd_y);
Sleep(1000);//1秒
setcolor(BLACK);
setlinestyle(PS_SOLID,2);
line(center_x,center_y,secondEnd_x,secondEnd_y);//隐藏前一帧的秒针
setlinestyle(PS_SOLID,4);
line(center_x,center_y,minuteEnd_x,minuteEnd_y);//隐藏前一帧的分针
setlinestyle(PS_SOLID,6);
line(center_x,center_y,hourEnd_x,hourEnd_y);//隐藏前一帧的时针
}
getch();
closegraph();//关闭绘图窗口
return 0;
}
效果图如下:
六、添加表盘 刻度
代码如下:
#include<graphics.h>
#include<conio.h>
#include<math.h>
#define High 480 //游戏画面尺寸
#define Width 640
#define PI 3.14159
int main(void)
{
initgraph(Width,High);//初始化绘图窗口
int center_x,center_y;//中心点的坐标,也是钟表的坐标
center_x=Width/2;
center_y=High/2;
int secondLength=Width/7;//秒针的长度
int minuteLength=Width/6;//分针的长度
int hourLength=Width/5;//时针的长度
int secondEnd_x,secondEnd_y;//秒针的终点
int minuteEnd_x,minuteEnd_y;//分针的终点
int hourEnd_x,hourEnd_y;//时针的终点
float secondAngle=0;//秒针对应的角度
float minuteAngle=0;//分针对应的角度
float hourAngle=0;//时针对应的角度
SYSTEMTIME ti;//定义保存当前时间的变量
BeginBatchDraw();
while(1)
{
//绘制一个简单的表盘
setlinestyle(PS_SOLID,1);//设置表盘边的粗细
setcolor(WHITE);//设置表盘边的颜色
circle(center_x,center_y,Width/4);//画表盘
//画刻度
int x,y,i;
for(i=0;i<60;i++)
{
x=center_x+int(Width/4.3*sin(PI*2*i/60));
y=center_y+int(Width/4.3*cos(PI*2*i/60));
if(i%15==0)
bar(x-5,y-5,x+5,y+5);
else if(i%5==0)
circle(x,y,3);
else
putpixel(x,y,WHITE);
}
outtextxy(center_x-25,center_y+Width/6,"我的时钟");
outtextxy(center_x-120,High-60,"[时针: 红色] [分针: 蓝色] [秒针: 白色]");
GetLocalTime(&ti);//获取当前时间
//秒针角度的变化
secondAngle=ti.wSecond*2*PI/60;
//一圈一共2*PI,一圈60秒,一秒钟秒针走过的角度为2*PI/60
//由角度决定的秒针终点坐标
//分针角度的变化
minuteAngle=ti.wMinute*2*PI/60;
//一圈一共2*PI,一圈60分,一分钟秒针走过的角度为2*PI/60
//时针角度的变化
hourAngle=ti.wHour*2*PI/12;
//一圈一共2*PI,一圈12时,一小时时针走过的角度为2*PI/12
//由角度决定的秒针终点坐标
secondEnd_x=center_x+secondLength*sin(secondAngle);
secondEnd_y=center_y-secondLength*cos(secondAngle);
//由角度决定的分针终点坐标
minuteEnd_x=center_x+minuteLength*sin(minuteAngle);
minuteEnd_y=center_y-minuteLength*cos(minuteAngle);
//由角度决定的时针终点坐标
hourEnd_x=center_x+hourLength*sin(hourAngle);
hourEnd_y=center_y-hourLength*cos(hourAngle);
//画秒针
setlinestyle(PS_SOLID,2);//画实线,宽度为两个像素
setcolor(WHITE);
line(center_x,center_y,secondEnd_x,secondEnd_y);
//画分针
setlinestyle(PS_SOLID,4);//画实线,宽度为4个像素
setcolor(BLUE);
line(center_x,center_y,minuteEnd_x,minuteEnd_y);
//画时针
setlinestyle(PS_SOLID,6);//画实线,宽度为6个像素
setcolor(RED);
line(center_x,center_y,hourEnd_x,hourEnd_y);
FlushBatchDraw();
Sleep(1000);//1秒
setcolor(BLACK);
setlinestyle(PS_SOLID,2);
line(center_x,center_y,secondEnd_x,secondEnd_y);//隐藏前一帧的秒针
setlinestyle(PS_SOLID,4);
line(center_x,center_y,minuteEnd_x,minuteEnd_y);//隐藏前一帧的分针
setlinestyle(PS_SOLID,6);
line(center_x,center_y,hourEnd_x,hourEnd_y);//隐藏前一帧的时针
}
EndBatchDraw();
getch();
closegraph();//关闭绘图窗口
return 0;
}
效果图如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。