同样,你也可以来

SD!LTF - 博客园​cnblogs.com

众所周知,控制台可以变得图形化
关于C++控制台上的图形界面,除了一堆printf("--------------");你知道一个东西叫做EasyX吗?

作为一个退役的OI选手(WTF? 3^2-3^132−31 年级退役?),在退役之后总想找点事情做。

  • 开发个游戏?(我只会控制台)
  • 学下人工智能?(脑子不够用)
  • 学一下Py?(爱我C++)
  • 打文化课?(滚一边去)

好吧,我选择了开发个游戏。
但是每次看到自己的游戏都是控制台界面的,很不爽
图形界面咋样?

  • QT?(不会)
  • MFC?(算了吧)
  • ALT?(这又是啥?)
  • Win32?(早过时了)
  • EasyX?(这是个什么东西?)

马上我们就要介绍我们今天的主角——EasyX图形库!


关于EasyX

Q:EasyX怎么读?
A:Easy+/eks/或者Easy+叉(

Q:他是啥?
A:EasyX 是针对 C++ 的图形库

Q:他可以干什么?
A:可以帮助 C++语言初学者快速上手图形和游戏编程

Q:简单吗?(重点)
A:安装简单(极其简单),使用简单(这个必须赞)

Q:确定没缺点?
A:唯一一点不好的,EasyX只能支持VS系列产品(VC6.0,VSxxx,不包括VSCode)如果你想copy一下EasyX的库放到其他编译器里边试试,你也可以试试


如何下载?

1.打开EasyX官网点我
应该是这样子的:

2.点击“下载 EasyX”(在图片的右边,找不到算你眼瞎)

3.直接打开安装包

4.下一步,来到选择界面

5.点击安装(EasyX文档也可以安装一下,但下面的必须点一个)

6.点击关闭

结束

如果你想测试一下,你的EasyX有没有成功安装
打开你的VC/VS2008/VS2010……
新建一个“空项目”或者“控制台项目”(记住啦!!重点!!一定是控制台!!)
输入:

#include <graphics.h>      // 引用图形库头文件
#include <conio.h>
int main()
{initgraph(640, 480);   // 创建绘图窗口,大小为 640x480 像素circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100_getch();              // 按任意键继续closegraph();          // 关闭绘图窗口
}

f5一下,黑窗口上是不是出现了一个圆?
恭喜你,安装成功!


如何食用?

EasyX主要靠函数来进行图形化编程。如果你不知道用啥函数,可以根据帮助文档EasyX_Help.chm来得到相应帮助

在这里举一个例子,电视雪花

#include <graphics.h>      // 引用图形库头文件
#include <conio.h>
#include <time.h>
#include <cstdlib>
int main()
{srand((unsigned)time(NULL));initgraph(640, 480);   // 创建绘图窗口,大小为 640x480 像素while(1){for(int i = 0;i <= 640;i ++){for(int j = 0;j < 480;j ++){putpixel(i,j,rand()%2==1?BLACK:WHITE);}}}
}

来个彩色版本的?

#include <graphics.h>      // 引用图形库头文件
#include <conio.h>
#include <time.h>
#include <cstdlib>
int main()
{srand((unsigned)time(NULL));initgraph(640, 480);   // 创建绘图窗口,大小为 640x480 像素while (1) {for (int i = 0; i <= 640; i++) {for (int j = 0; j < 480; j++) {int color = rand() % 0x233233;putpixel(i, j, color);          }}}
}

模拟钟表

#include <graphics.h>
#include <conio.h>
#include <math.h>#define PI  3.1415926536void DrawHand(int hour, int minute, int second)
{double a_hour, a_min, a_sec;                    // 时、分、秒针的弧度值int x_hour, y_hour, x_min, y_min, x_sec, y_sec; // 时、分、秒针的末端位置// 计算时、分、秒针的弧度值a_sec = second * 2 * PI / 60;a_min = minute * 2 * PI / 60 + a_sec / 60;a_hour= hour * 2 * PI / 12 + a_min / 12;// 计算时、分、秒针的末端位置x_sec = int(120 * sin(a_sec));y_sec = int(120 * cos(a_sec));x_min = int(100 * sin(a_min));y_min = int(100 * cos(a_min));x_hour= int(70 * sin(a_hour));y_hour= int(70 * cos(a_hour));// 画时针setlinestyle(PS_SOLID, 10);setcolor(WHITE);line(320 + x_hour, 240 - y_hour, 320 - x_hour / 7, 240 + y_hour / 7);// 画分针setlinestyle(PS_SOLID, 6);setcolor(LIGHTGRAY);line(320 + x_min, 240 - y_min, 320 - x_min / 5, 240 + y_min / 5);// 画秒针setlinestyle(PS_SOLID, 2);setcolor(RED);line(320 + x_sec, 240 - y_sec, 320 - x_sec / 3, 240 + y_sec / 3);
}void DrawDial()
{// 绘制一个简单的表盘circle(320, 240, 2);circle(320, 240, 60);circle(320, 240, 160);outtextxy(296, 310, "BestAns");// 绘制刻度int x, y;for (int i=0; i<60; i++){x = 320 + int(145 * sin(PI * 2 * i / 60));y = 240 + int(145 * 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);elseputpixel(x, y, WHITE);}
}void main()
{initgraph(640, 480);        // 初始化 640 x 480 的绘图窗口DrawDial();                 // 绘制表盘setwritemode(R2_XORPEN);    // 设置 XOR 绘图模式// 绘制表针SYSTEMTIME ti;              // 定义变量保存当前时间while(!kbhit())             // 按任意键退出钟表程序{GetLocalTime(&ti);      // 获取当前时间DrawHand(ti.wHour, ti.wMinute, ti.wSecond); // 画表针Sleep(1000);            // 延时 1 秒DrawHand(ti.wHour, ti.wMinute, ti.wSecond); // 擦表针(擦表针和画表针的过程是一样的)}closegraph();               // 关闭绘图窗口
}

啥?你要鼠标操作?

#include <graphics.h>
#include <conio.h>int main()
{// 初始化图形窗口initgraph(640, 480);MOUSEMSG m;     // 定义鼠标消息while(true){// 获取一条鼠标消息m = GetMouseMsg();switch(m.uMsg){case WM_MOUSEMOVE:// 鼠标移动的时候画红色的小点putpixel(m.x, m.y, RED);break;case WM_LBUTTONDOWN:// 如果点左键的同时按下了 Ctrl 键if (m.mkCtrl)// 画一个大方块rectangle(m.x-10, m.y-10, m.x+10, m.y+10);else// 画一个小方块rectangle(m.x-5, m.y-5, m.x+5, m.y+5);break;case WM_RBUTTONUP:return 0;   // 按鼠标右键退出程序}}// 关闭图形窗口closegraph();return 0
}

EasyX的函数有很多,
在帮助文档里,也有很多实例哦~
相信各位大佬能做出更好的东西!


答疑

Q:EasyX是针对Windows的吗?
A:是的呢!

Q:我是其他编译器的爱好者,我不喜欢用VS,怎么使用EasyX?
A:EasyX咋使用我是不知道的,但是你可以百度一下ege,这是一个跟EasyX差不多的东西

Q:如果出现找不到文件之类的报错信息又不知道哪里错了咋办?
A:请重装

Q:怎么获取EasyX的最新版?
A:请登录官网,里边还有QQ群组,大佬用户们的投稿哦~

Q:从哪里看EasyX用户的投稿?
A:这里,你可以选择投稿,也可以在右侧查看大佬们的投稿


完结 感谢观看

用easyx画五角星_【洛谷日报#195】有个东西叫EasyX相关推荐

  1. 用easyx画五角星_冷军画了一把破剪刀, 竟然卖到了160万,被专家抨击:乱涂鸦!得奖后专家顿时不说话了...

    本文转自:美术生 ID:mssxcx 最近看到一篇报道 冷军画了一把破烂的剪刀 卖了162.4万(天价)? 这是营销还是创作? △冷军<突变--有刺的剪刀> 这一幅破烂的剪刀中真实的剪刀静 ...

  2. 洛谷日报 2020年3月前索引

    2020 2019 2018 感觉洛谷日报全是干货!!!先记下来再说 2020 年洛谷日报索引 3 月 #260[dove]Church 编码(和 Lambda 演算) https://www.luo ...

  3. 洛谷日报索引(2020、2019、2018)

    历年洛谷日报索引 2020 2019 2018 感觉洛谷日报全是干货!!!先记下来再说 2020 年洛谷日报索引 3 月 #260[dove]Church 编码(和 Lambda 演算) https: ...

  4. [转载]洛谷日报索引

    2019年 6月 #183[朝田诗乃]你以为莫队只能离线?莫队的在线化改造 https://shoko.blog.luogu.org/moqueue #182[Heartlessly ]常用距离算法详 ...

  5. python高精度乘法_洛谷P1919--A*B Problem升级版(NTT优化高精度乘法)

    题目背景 本题数据已加强,请使用 FFT/NTT,不要再交 Python 代码浪费评测资源. 题目描述 给你两个正整数 a,b,求$ a \times b$. 输入格式 第一行一个正整数,表示 a: ...

  6. java 旅行家的预算_洛谷 P1016 旅行家的预算 Java解法

    洛谷 P1016 旅行家的预算 Java解法 洛谷 P1016 旅行家的预算 Java解法 package com.two; import java.util.Scanner; public clas ...

  7. c语言倒序输出单词_洛谷 || 单词覆盖还原(C语言)

    点击上方「蓝字」关注"程序员Bob" 每天与你不见不散! 每日一句,送给最珍贵的你: 诱人的机会总是转瞬即逝的.真正好的投资机会不会经常有,也不会持续很长的时间,所以你必须做好行动 ...

  8. python冰雹猜想_洛谷-P5727 【深基5.例3】冰雹猜想

    洛谷-P5727 [深基5.例3]冰雹猜想 给出一个正整数 \(n(n\le 100)\),然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2.经过若干次循环 ...

  9. 255.0.0.0子网掩码相应的cidr前缀表示法是?_【洛谷日报#246】浅谈表达式的求值(Vol.2 进阶)...

    Warning 在观看本博客之前,请保证自己理解了表达式的三种表达方式. 本文旨在让大家更深层次的了解表达式,基础的知识就是上方的链接中所写的.所以,在了解后缀表达式的运算原理之后,我将不会讲述类似的 ...

最新文章

  1. PhpMyAdmin导入数据库大小限制?
  2. 私有云的优缺点_2019年中国云计算行业竞争格局与发展趋势分析「图」
  3. 201521123078 《Java程序设计》第6周学习总结
  4. 机电传动控制第一周学习笔记
  5. 最大跨度值(信息学奥赛一本通-T1063)
  6. 查找、插入、删除都很快的数据结构(散列表vs红黑树vs跳表)
  7. IOS开发-关于自定义TabBar条
  8. 2020蓝桥杯省内模拟赛C++B组1-8(详细解析,看完就会)
  9. 【一天一个C++小知识】002.C++中const和volatile关键字
  10. DEV 实现CheckBox单选
  11. Atiti  attilax主要成果与解决方案与案例rsm版
  12. 12满秩分解与奇异值分解(1)
  13. 【30天精通JavaScript ~ 网络篇】JavaScript 网络请求与远程资源
  14. 刷新ListView刷新时的闪烁问题
  15. xp服务器下建立web站点,Windows XP配置WEB服务器教程(图文教程)
  16. web前端期末大作业 基于HTML+CSS家乡主题毕业设计源码 (1)
  17. 中国气象台API(2017.09)
  18. java支付宝网页授权_轻松实现支付宝服务窗网页授权从配置到获取授权获取用户信息...
  19. 计算机创新创业计划2000字,创新创业论文2000字
  20. i3 10100F和R3 3200G哪个好

热门文章

  1. 编译环境与生成环境的JDK版本不一样,报:java.util.zip.ZipException: error in opening zip file
  2. 录像的视频如何在画面中实时加上时间戳
  3. Java学习笔记2.3.2 运算符与表达式 - 赋值运算符
  4. 大数据学习笔记41:Hive - 用户自定义函数
  5. 安卓案例:利用定时器实现逐帧动画
  6. 【TOJ1132】Square Root,二次同余方程
  7. jsp测试连接mysql_JSP 连接MySQL配置与测试
  8. bzoj 4942 整数 思考记录
  9. django model对象修改_从0到1搭建个人博客-Django(三)
  10. 【英语学习】【WOTD】trivial 释义/词源/示例