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;
}

效果图如下:

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

(0)

相关推荐

  • C语言实现基于控制台的电子时钟

    使用c语言制作一个控制台的电子时钟,供大家参考,具体内容如下 学习了c语言基本语法后,在学习了time.h的库文件,让我产生了想制作一款电子时钟的念头,那好就开始动手操作吧. 使用到下面这些技术: 首先必须先导入库 /***************** 实时数字时钟(和计算机系统时间关联) ************** #include <time.h>  -- 必须的时间函数头文件 time_t -- 时间类型(time.h 定义) struct tm -- 时间结构,time.h 定义如下

  • C语言实现电子时钟程序

    本文实例为大家分享了C语言实现电子时钟程序的具体代码,供大家参考,具体内容如下 Qt 里面运行 #include<windows.h> #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h> typedef struct { int x; int y; }Point; time_t now; struct tm *pt, t1, t2; int pri

  • C语言实现电子秒表

    秒表是我们生活中常见的计时工具,特别是在运动会等比赛中,今天我就来写一个简单的电子秒表. 实现思路 这里简单介绍一下我的实现思路: 1.简单版:简单版本只实现了单次计时功能,即每次开启程序后就开始计时,如果按下键盘任意键,就结束计时,计时通过Sleep(1000)延时实现,每过1秒,计数值(总秒数)cnt加1,打印时,将总秒数cnt转换成时分秒进行显示.[Sleep()函数并不准确,只能实现粗略延时] 2.高级版:实现毫秒级计时,可重复计时(暂停.清零),计时使用gettimeofday()函数

  • C语言基于EasyX库实现有图形界面钟表

    本文实例为大家分享了C语言基于EasyX库实现有图形界面钟表的具体代码,供大家参考,具体内容如下 1.目标要求: 实现一个显示图像的时钟 2.C语言代码: #include<graphics.h> //需要提前下载EasyX库哦 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<conio.h> #include<math.h> #define High

  • C语言计算代码执行所耗CPU时钟周期

    该代码受乱序执行等影响, 需要sync LARGE_INTEGER _start = { 0 }, _end = { 0 }; __asm{ rdtsc mov dword ptr [_start.LowPart], eax mov dword ptr[_start.HighPart], edx } //your code here __asm{ rdtsc mov dword ptr [_end.LowPart], eax mov dword ptr[_end.HighPart], edx }

  • C语言绘制简单时钟小程序

    本文实例为大家分享了C语言绘制时钟小程序的具体代码,供大家参考,具体内容如下 先贴效果图给大家先看看 基本机制是通过获取系统的时钟去绘制图线进行展示 贴出代码 ,大家可以直接使用的 .程序我进一步的讲解 #include <graphics.h> #include <conio.h> #include <math.h> #include <time.h>   #define high 480 #define width 640 #define pi 3.14

  • C语言基于EasyX库实现有图形界面时钟

    本文实例为大家分享了C语言基于EasyX库实现有图形界面时钟的具体代码,供大家参考,具体内容如下 1.目标要求: 1.实现一个显示图像的时钟2.时间与本地时间一致 2.C语言代码: #include<graphics.h> //需要提前安装库函数EasyX,网上官网下载 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<conio.h> #include<ma

  • C语言基于EasyX绘制时钟

    本文实例为大家分享了C语言基于EasyX绘制时钟的具体代码,供大家参考,具体内容如下 函数说明: void line(     int x1,     int y1,     int x2,     int y2 ); 参数 x1直线的起始点的 x 坐标. y1直线的起始点的 y 坐标. x2直线的终止点的 x 坐标. y2直线的终止点的 y 坐标. 文件素材 源代码 #include <graphics.h> #include <conio.h> #include <mat

  • 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_

  • 原生JS实现实时钟表

    分享一个用原生JS实现的实时钟表特效,效果如下(PS:实际指针是按360度走的,截图时只截了一部分) 上面的效果一共需要4张图片,分别是表盘.时针.分针.秒针,根据需要可以自己做图片,实现的代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>原生JS实现实时钟表</title> <style

  • python 使用turtle实现实时钟表并生成exe

    源代码 python引入两个内置库turtle和datetime即可制作一个实时钟表,代码如下: # 用turtle画时钟 # 以自定义shape的方式实现 import turtle as t import datetime as d def skip(step): # 抬笔,跳到一个地方 t.penup() t.forward(step) t.pendown() def drawClock(radius): # 画表盘 t.speed(0) t.mode("logo") # 以Lo

  • Perl eval函数使用实例

    Perl 作为一种脚本语言可以实时地生成和执行代码.这种特性可以把代码的编译推迟到运行时,所以又称为"动态代码".另外, Perl 也如 Java . C++ 一样提供了异常处理机制.本文将初步探讨Perl 中实现动态代码和异常处理机制的函数: eval .如有错误不足,欢迎讨论和批评指正. eval 函数可以看作是 Perl 虚拟机,它的参数就是一段 Perl 代码.利用 'perldoc –f eval'可以获取 eval 函数使用帮助,其中介绍了它的两种使用方式: 复制代码 代码

  • C++使用easyx画实时走动的钟表

    这次的任务是用c++画出实时走动的钟表,并且与当前系统的时间一致. 由于我们使用的是c++语言,我们更需要用这个例子来提高我们对面向对象程序设计的理解. 我们首先需要分析出需求,“画一个能够实时走动的钟表”,根据需求我们可以好处两个对象,钟表对象与画图对象,所以我们大致先建立两个类,Clock类与Paint类. Clock类中的成员变量都有:表的中心坐标x与y.表的时间(时.分.秒).表的大小r(即半径).表盘的颜色color. Clock类中无其他函数,只有用于初始化的构造函数. Paint类

  • Python中利用pyqt5制作指针钟表显示实时时间(指针时钟)

    文末附完整源代码实现过程... 想实现这样一个功能,然后pyqt5中又没有现成的组件可以使用,于是就想着只能通过绘图的方式来实现.说到绘图的话,turtle框架无疑是最常见的选择,但其实通过pyqt5的QPainter组件也是可以实现的.而且最后呈现出来的效果还是挺漂亮的. 实现思路:通过使用pyqt5的QPainter组件来绘制好时钟的图表,最后通过定时器不断的改变当前当前时间在图表上面的显示位置.这样最终就实现了一个指针时钟在不断的走动的过程. 和前面的UI应用一样,我们用到的UI相关的组件

  • Python编程使用PyQt5制作动态钟表示例

    目录 前言 环境配置 实现思路 老式钟表制作 电子表制作 合并两表界面 核心代码 总结 前言 大家好,我是小张~ 记得小时候,家里只有一个钟表用来看时间(含有时针.分针.秒针的那种),挂在墙上哒哒哒响个不停,现在生活条件好了.基本人手一部手机,看时间也不再依靠表了,而今天的文章内容就是与这类钟表相关: 环境配置 程序中用到的Python包 PyQt5 math sys 实现思路 实现思路分为大致分为三个部分:老式钟表制作.电子表制作.两表合并为一个界面 老式钟表制作 整体来看老式钟表界面,有以下

  • Java语言十大基础特性分析

    Java语言的作者们编写了具有广泛影响的Java白皮书,里面详细地介绍了他们的设计目标以及实现成果,还用简短的篇幅介绍了Java语言的特性.下面将对这些特性进行介绍. 1. 简单 Java语言的语法简单明了,容易掌握,而且是纯面向对象的语言.Java语言的简单性主要体现在以下几个方面: 语法规则和C++类似.从某种意义上讲,Java语言是由C和C++语言转变而来的,所以C程序设计人员可以很容易地掌握Java语言的语法. Java语言对C++进行了简化和提高.例如,Java使用接口取代了多重继承,

  • Python实时获取cmd的输出

    最近发现一个问题,一个小伙儿写的console程序不够健壮,监听SOCKET的时候容易崩,造成程序的整体奔溃,无奈他没有找到问题的解决办法,一直解决不了,可是这又是一个监控程序,还是比较要紧的,又必须想办法解决. (这是要搞死我的节奏啊....)由于个人不太懂他用的语言,只能在程序外围想办法. 环境描述: 1. 目标程序执行时会监听8080端口,TCP,并在每一次client连接后通过console输出client的IP地址. 2. 监听不是一次性完成的,而是一直监听,程序并不会退出 3. 为了

随机推荐