实时钟表

//实时钟表
#include <graphics.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>

#define high 480 //游戏画面尺寸
#define width 640
#define PI 3.1415926

int main()
{
    initgraph(width,high); //初始化480*640的绘图窗口
    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 sencondAngle; //秒针对应的角度
    float minuteAngle; //分针对应的角度
    float hourAngle; //时针对应的角度
    
    SYSTEMTIME ti;  //定义变量保存当前的时间
    
    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,5);
            else putpixel(x,y,WHITE);
        }
        outtextxy(center_x-25,center_y+width/6,"我的时钟");
        
        GetLocalTime(&ti); //获取当前的时间
        sencondAngle=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/60; //一圈一共2*PI,一圈60秒,一秒钟走过的角度为2*PI/60

        //由角度决定的秒针端点的坐标
        secondend_x=center_x+secondlength*sin(sencondAngle);
        secondend_y=center_y-secondlength*cos(sencondAngle);
        
        //由角度决定的分针端点的坐标
        minuteend_x=center_x+minutelength*sin(minuteAngle);
        minuteend_y=center_x-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);
        setcolor(BLUE);
        line(center_x,center_y,minuteend_x,minuteend_y); //画分针
        
        setlinestyle(PS_SOLID,6);
        setcolor(RED);
        line(center_x,center_y,hourend_x,hourend_y);  //画时针
        
        sleep(10);
        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;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值