2019春第三次课程设计实验报告

Posted y-x-n

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019春第三次课程设计实验报告相关的知识,希望对你有一定的参考价值。

一、项目实验名称:实时时钟
二、实验功能描述:利用EasyX实现显示时间的小程序,同时学习时间函数的使用。
三、项目模块介绍:
技术图片
程序最终代码:

#include <graphics.h>
#include <conio.h>
#include <math.h>

#define High 480  // 游戏画面尺寸
#define Width 640
#define PI  3.14159

int main()

    initgraph(Width, High);     // 初始化 640 x 480 的绘图窗口  
    int center_x,center_y;      // 中心点的坐标,也是表的中心
    center_x = Width/2;
    center_y = High/2;
    int secondLength = Width/5;           // 秒针的长度
    int minuteLength = Width/6;           // 分针的长度
    int hourLength = Width/7;             // 时针的长度
    
    int secondEnd_x,secondEnd_y;    // 秒针的终点
    int minuteEnd_x,minuteEnd_y;    // 分针的终点
    int hourEnd_x,hourEnd_y;    // 时针的终点
    float secondAngle;       // 秒钟对应的角度
    float minuteAngle;       // 分钟对应的角度
    float hourAngle;         // 时钟对应的角度
    
    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, "我的时钟");
        
        GetLocalTime(&ti);      // 获取当前时间
        // 秒钟角度变化
        secondAngle = ti.wSecond * 2*PI/60;  // 一圈一共2*PI,一圈60秒,一秒钟秒钟走过的角度为2*PI/60
        // 分钟角度变化
        minuteAngle = ti.wMinute * 2*PI/60 + secondAngle/60;  // 一圈一共2*PI,一圈60分,一分钟分钟走过的角度为2*PI/60
        // 时钟角度变化
        hourAngle = ti.wHour * 2*PI/12 + minuteAngle/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(YELLOW);
        line(center_x, center_y, secondEnd_x, secondEnd_y); // 画秒针
        
        setlinestyle(PS_SOLID, 5);  
        setcolor(BLUE);
        line(center_x, center_y, minuteEnd_x, minuteEnd_y); // 画分针
        
        setlinestyle(PS_SOLID, 10);  
        setcolor(RED);
        line(center_x, center_y, hourEnd_x, hourEnd_y); // 画时针
        
        FlushBatchDraw();       
        Sleep(10);
        
        setcolor(BLACK);
        setlinestyle(PS_SOLID, 2); 
        line(center_x, center_y, secondEnd_x, secondEnd_y);  // 隐藏前一帧的秒针
        setlinestyle(PS_SOLID, 5);  
        line(center_x, center_y, minuteEnd_x, minuteEnd_y); // 隐藏前一帧的分针
        setlinestyle(PS_SOLID, 10);  
        line(center_x, center_y, hourEnd_x, hourEnd_y); // 隐藏前一帧的时针
    
    
    EndBatchDraw();
    getch();                // 按任意键继续   
    closegraph();           // 关闭绘图窗口
    return 0;

四、实现界面展示(截图):
技术图片
五、代码托管链接:
https://gitee.com/Y-X-N/programming
六、实验总结:
这个程序定义的变量比较多,对于时间函数看的不是太明白,另外vs2017的操作比较难,先要装一个easyx,然后按照打的最终代码运行,发现错误,于是复制随书资源的代码,结果一样错误,最后在室友的帮助下成功截图。
感想:vs根本不适合我哈哈哈哈。
技术图片

以上是关于2019春第三次课程设计实验报告的主要内容,如果未能解决你的问题,请参考以下文章

2019春第三次课程设计实验报告

2019年春第三次课程设计实验报告

2019春第三次课程设计实验报告

2019年春第三次课程设计实验报告

2019春第三次课程设计实验报告

2019春第三次课程设计实验报告