关于C++控制台上的图形界面,你知道一个东西叫做EasyX吗?

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

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

好吧,我选择了开发个游戏。

但是每次看到自己的游戏都是控制台界面的,很不爽

图形界面咋样?

  • QT?(不会)
  • MFC?(算了吧)
  • EasyX?(这是个什么东西?)

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


关于EasyX

EasyX 是针对 C++ 的图形库,可以帮助 C++语言初学者快速上手图形和游戏编程。

安装简单(极其简单),使用简单(这个必须赞),唯一一点不好的,就是只能支持VS系列产品(VC6.0,VSxxx,不包括VSCode)


如何下载?

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.1415926536 void 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);
else
putpixel(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吗的更多相关文章

  1. 在visual studio2015中使用easyX画图

    配置:解压EasyX压缩包: 将文件内的include,lib,lib/amd64下的文件拷贝到visualstudio中VC文件夹内对应的地方: 然后再执行上图中的Setup.hta进行安装: 在v ...

  2. easyx与VS2015

    7.10 之前在文件头将__acrt_iob_func重定义&__iob_func,在格子涂色的程序中解决了问题:然而在俄罗斯方块的程序中出现了更多的问题,好像是FILE在其他外部依赖项cor ...

  3. easyX最新版在VS2015上的问题解决啦啦

    7.10 修改完easyX的路径,只剩下一个问题 []无法解析的外部符号_iob_func,该符号在函数“”中被引用 []1个无法解析的外部命令 原因: 版本的问题,代码已经编译过了,但是是2012版 ...

  4. 双人五子棋对战(需要EasyX图像库)

    实训要做项目呐.天天坐在电脑面前累死了.最近题刷的少.大多数都挺水.就不挨个编辑发上来了.发发白天写的项目吧.可能好几天更一下.实训结束恢复正常. 这个游戏需要EasyX的图像库.有兴趣的可以下一个图 ...

  5. EasyX

    官方网站:http://www.easyx.cn/   安装图解:http://www.easyx.cn/news/View.aspx?id=5   系统支持[1]  编译环境版本:Visual C+ ...

  6. C++经典绘图工具EasyX

    EasyX简介 EasyX 在学习C语言时,很多同学抱怨说C只能写最简单的Demo程序,通过printf在屏幕上打印字符来验证代码.这样的编程很枯燥,一点没觉得自己在设计软件. EasyX是针对C++ ...

  7. C图形库Easyx的使用

    学习Eaxy X图形库后我的成果: 花了一周时间做出并完善了Flappy Bird,目前功能如下: 1. 背景的显示 2. 加入小鸟image 3. 小鸟自由下落,按空格键/鼠标右键后上升 4. 加入 ...

  8. EASY-X

    ----------------------- Page 1----------------------- 一 创建新项目 VC 写程序要有项目的概念,一个项目可以有多个 .cpp 文件,多个项目构 ...

  9. easyx的基础应用教程

    引用 什么是 EasyX? 作者:EasyX EasyX 是针对 C++ 的图形库,可以帮助 C 语言初学者快速上手图形和游戏编程. 比如,可以用 VC + EasyX 很快的用几何图形画一个房子,或 ...

  10. easyx图形库做贪吃蛇游戏

    编程总是对着一个黑窗口,可以说是非常乏味了,于是喵喵就翻出来了以前用easyx图形库做图形界面的贪吃蛇游戏. 不过大家只是当做提高编程的乐趣来学习吧,想进一步做的话可以学习QT,还有其他的框架. 这是 ...

随机推荐

  1. makefile个人理解

    makefile makefile抽象层面的理解 学习某一样东西之前一定要明确学习的目的,即学习了这项工具能解决一些什么问题,其优势是什么? makefile的优势就是能够动态根据文件的新旧来决定是否 ...

  2. vue将接口返回的日期实时转换为几分钟前、几小时前、几天前

    项目开发中,各种需求都会遇到,有些需求很合理,也好实现,有些需求不能说不合理,就是太麻烦,就比如类似标题所描述这种的需求,你不能说它是不合理的需求,因为很多论坛或微博.朋友圈.QQ空间之类的这种效果还 ...

  3. winds消息大全

    本文链接:https://blog.csdn.net/testcs_dn/article/details/42360547 消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了.例如, ...

  4. C#实现文件Move操作和文件的Copy操作

    文件移动(Move)操作和文件的复制(Copy)是C#程式开发经常遇到的方法,根据传入的源文件地址和目标文件地址参数,实现对文件的操作.实现代码如下: Move操作代码: public static ...

  5. 一些常用查询SQL语句以及显示格式

    1.查询当前年.月.周相关时间 1.1.查询当前年份 SELECT TO_CHAR(SYSDATE,'YYYY') AS YEAR FROM DUAL--查询当前年份 SELECT TO_CHAR(S ...

  6. Java StringBuilder类

    StringBuilder的原理 String类 字符串是常量,它们的值在创建之后不能更改 字符串的底层是一个被final修饰的数组,不能改变 private final byte[] value; ...

  7. 通过例子进阶学习C++(五)计算2的1次方至2的64次方之和

    本文是通过例子学习C++的第五篇,通过这个例子可以快速入门c++相关的语法. 1.上篇回顾 在上一篇中,我们通过字符数组计算264次方: 通过例子进阶学习C++(四)计算2的64次方 带着这个问题:为 ...

  8. 79.纯 CSS 创作单元素麦当劳金拱门 Logo(自创)

    效果地址:https://scrimba.com/c/cN3P6nfr 原理:两个椭圆,颜色部分为边框,下一半被伪元素覆盖. 感想:看了一眼大神的,代码比我的还少,得研究研究去. HTML code: ...

  9. hdu6621 二分加主席树

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6621 Problem Description You have an array: a1, a2,  ...

  10. 安全检测检查清单(Web)网站

    (一) 检查项:弱锁定机制 优先级:高 检查要点:检查系统帐号锁定机制健壮性 检查方法: 1.尝试使用错误的密码登录5次,查看账户是否被锁定2.等待10分钟再次测试,确认该用户是否还处于锁定状态 (二 ...