C语言实现实时钟表

 更新时间:2022年05月12日 16:04:30   作者:辉小歌  
这篇文章主要为大家详细介绍了C语言实现实时钟表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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;
}

效果图如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C语言中对文件最基本的读取和写入函数

    C语言中对文件最基本的读取和写入函数

    这篇文章主要介绍了C语言中对文件最基本的读取和写入函数,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • C++实现数字转换为十六进制字符串的方法

    C++实现数字转换为十六进制字符串的方法

    这篇文章主要介绍了C++实现数字转换为十六进制字符串的方法,涉及C++操作数字与字符串转换的相关技巧,需要的朋友可以参考下
    2015-06-06
  • c++调用python实现图片ocr识别

    c++调用python实现图片ocr识别

    所谓c++调用python,实际上就是在c++中把整个python当作一个第三方库引入,然后使用特定的接口来调用python的函数或者直接执行python脚本,本文介绍的是调用python实现图片ocr识别,感兴趣的可以了解下
    2023-09-09
  • 详解c++20协程如何使用

    详解c++20协程如何使用

    这篇文章主要介绍了详解c++20协程如何使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C++实现string存取二进制数据的方法

    C++实现string存取二进制数据的方法

    这篇文章主要介绍了C++实现string存取二进制数据的方法,针对STL中string的用法进行了较为详细的分析,需要的朋友可以参考下
    2014-10-10
  • C++实现LeetCode(189.旋转数组)

    C++实现LeetCode(189.旋转数组)

    这篇文章主要介绍了C++实现LeetCode(189.旋转数组),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • OpenGL实现边缘填充算法

    OpenGL实现边缘填充算法

    这篇文章主要为大家详细介绍了OpenGL实现边缘填充算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • C语言中的操作符优先级的详细介绍

    C语言中的操作符优先级的详细介绍

    这篇文章主要介绍了C语言中的操作符优先级的详细介绍的相关资料,希望通过本文能帮助到大家,大家通过本文能彻底掌握这部分内容,需要的朋友可以参考下
    2017-08-08
  • 使用C语言编写钢琴小程序

    使用C语言编写钢琴小程序

    这篇文章主要为大家详细介绍了使用C语言编写钢琴小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 利用Matlab绘制甘特图的方法详解

    利用Matlab绘制甘特图的方法详解

    这篇文章主要为大家详细介绍了如何利用Matlab实现甘特图(gantt chart)的绘制,文中的示例代码讲解详细,对我们学习Matlab有一定帮助,需要的可以参考一下
    2022-10-10

最新评论