c语言sin程序怎么写_小白基础知识必备||C语言图形库:Easy X库

132df5b38c6bf66807c9e68093f8dbe2.png

它是什么?

EasyX 是一个 C++ 图形库,封装了一些基本的绘图函数,可以实现在控制台窗口绘制图像,帮助 C/C++语言初学者快速上手图形编程。比如,可以用 VC + EasyX 很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练习图形学的各种算法,等等。

如何使用?

首先去它的官网:http://www.easyx.cn/downloads下载安装包,选择对应的VS版本,可以看到这个库虽然年代比较久远,不过也对新版本的VS有所支持。


以下来源于网络

今天接触了一个特别好的图形库,可以拯救像我一样目前只会C语言,但是又想让程序窗口不再一片漆黑,或者自己做个小游戏

为什么要用 EasyX?许多学编程的都是从 C 语言开始入门的,而目前的现状是:

1. 有些学校以 Turbo C 为环境讲 C 语言,只是 Turbo C 的环境实在太老了,复制粘贴都很不方便。

2. 有些学校直接拿 VC 来讲 C 语言,因为 VC 的编辑和调试环境都很优秀,并且 VC 有适合教学的免费版本。可惜在 VC 下只能做一些文字性的练习题,想画条直线画个圆都很难,还要注册窗口类、建消息循环等等,初学者会受严重打击的。初学编程想要绘图就得用 TC,很是无奈。

3. 还有计算机图形学,这门课程的重点是绘图算法,而不是 Windows 编程。所以,许多老师不得不用 TC 教学,因为 Windows 绘图太复杂了,会偏离教学的重点。新的图形学的书有不少是用的 OpenGL,可是门槛依然很高。所以,我想给大家一个更好的学习平台,就是 VC 方便的开发平台和 TC 简单的绘图功能,于是就有了这个 EasyX 库。如果您刚开始学 C 语言,或者您是一位教 C 语言的老师,再或者您在教计算机图形学,那么这个库一定会让您兴奋的。

网址:https://easyx.cn/你可以下载帮助文档快速上手,希望对你有所帮助!给大家分享一个时钟(单纯的会C是不可能做出这么漂亮的时钟的)

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

e66a02ee330eaa2533f37457d5f32e89.png

但是注意文件后缀名是.cpp因为EasyX是C++的库

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值