目录
一:EasyX简介
许多同学学校教的第一门编程语言就是C语言,而目前的现状就是学校只教基础的语法,一直在黑框框里面练习,学习起来相对于比较枯燥乏味,有的学校即使有图形编程也是一些难度较高的,例如windows32.openGL之类的,于是就有了EasyX库。Easy是一款对于c/c++图形库,对于初学者能尽快上手的一个图形库界面画工具,可以帮助初学者快速制作一些小游戏。例如可以用VS+EasyX画一个几何图形,可以是房子,可以是一辆移动的小汽车。也可以编写一些简易游戏,例如贪吃蛇,扫雷,黑白棋等。那么接下来就让我们一起正式的进入到EasyX的学习当中。
二:怎么安装使用EasyX
当然在使用之前我们首先需要安装Easy的图形库,就像我们用什么东西就要借助什么工具。
首先我们在百度直接搜索EasyX会出现一个这样的链接
这个就是EasyX的官网,点进去之后右上角会有一个下载的标志和文档,可以点击文档进去看看EasyX具体有哪些功能(这里不一一讲解),点击右上角的下载,点击下载之后会出现一个这样的框框
直接点击下一步来到第二个选项
这里有两个东西,第一个就是安装帮助文档,第二个就是我们的编程工具(EasyX会自动识别当前版本,不用担心配置问题)。我们可以看到下面有一个路径,当安装好了之后去到这个路径里面
这里会包含一个我们的EasyX的图形库头文件,如果文件这里有这个文件就说明我们的EasyX啊安装好了。
接下来打开我们的VS2019,创建一个新项目,这里值得注意的是,当我们创建文件的时候后缀一定要写成.CPP,如果我们写成.c的话会出现这样一个报错
这个就是要求我们的源文件要为C++文件,后缀腰围CPP,C就是不行的了。
三:输出图形化界面
当我们安装好了之后就可以正式开始对于EasyX的学习了。在使用之前我们需要包含EasyX的头文件(#include<graphics.h>),包含好了之后还要知道一点常识,我们知道三原色是值R(red)G(green)B(blue)三种颜色组成,这三种颜色可以合成所有的颜色,例如我们需要一个黑色的话就可以把数字调成RGB(5,5,5)。
接下里还有一个东西就是坐标,在数学中我们知道横坐标为X,纵坐标为Y,他们的起点坐标也就是(0,0)那么在EasyX中也同样是这样的,不同的是,比如说我话一个正方形,X,Y的坐标是从这个正方形开始画的那个地方为(0,0)出发的。如果我们要在X,Y的坐标范围内在画一个圆,那么这个圆就是以X,Y为中心点从半径开始画圆。
那么接下来我们就开始输出我们的第一个图形化界面。在输入之前呢我们需要调用一个函数
initgraph(int width,int height,int flag=NULL)我们可以看到中间有三个参数,那么这三个参数就和名字一样代表的高度和宽度。
最后一个标志如果我们正常运行的画会得到这样一个界面
initgraph(648,480,NOCLOSE);
比如说我们不想要这个×的按钮就可以输入NOCLOSE这样之后就会看到这个×按钮按不了了,可以的画自己制作一个小游戏把×给取消掉设置成必须通关才能结束掉,发给你的朋友增加友情。
当然还有其他的功能我们也可以选中这个标志,右键转到定义也能看到对应的许多功能,这里我就不逐个讲解,有兴趣的可以自己去尝试
我们可以在里面输入一些数值,例如(500,300)这样,当我们输入之后就正式的创建一个了一个窗口,做事我们将就有始有终。当窗口创建好了之后最后我们还得要关闭它,那么就有一个关闭函数(closegraph())。如果只是这样我们去运行的时候会发现有个东西一闪而过了,这是因为我们创建之后立马就关闭了。为了保证我们能看到这样的窗口可以在中间给一个geichar()让他卡死在这,当完成这一步我们的第一个窗口就创建好了。
四:画圆以及其他形状
接下来我们就可以开始在这个界面里面画上一些圆,方形之类的图形了,当然,画图形也会有一些对应的函数这里我们就拿一个画一个圆来举例子。
画圆分为三种,
一种是无边款无填充 cricle(int x,int y ,int r)
二种是有边框无填充 fillcricle(int x,int y ,int r)
三种是有边框有填充 solidcricle(int x,int y ,int r)
我们看到这三个函数也有三个参数,前面讲到X,Y就是我们的坐标,那么最后一个就是半径的意思,就是说,我们在X,Y的坐标点上以R为半径画一个圆。
我们可以直接尝试去VS里面输入这三个函数,运行起来之后就会发现我们确实得到了这样子的三个圆
只不过看这个圆好像有一些单调,看不出来这个有边框和无边框的差别,这里我们要还有几个函数,
设置填充颜色 setfillcolor(颜色)
设置边框颜色 setlinecolor(颜色)
设置边框大小 setlinestyle(实线,高度,宽度,字体)
前两个函数的参数还好理解,直接传入想要的颜色单词就可以了,例如我想填充颜色是红色就可以直接写成setfillcolor(RED),但是最后一个有4个参数,我们因该怎么去写。第一个实线,我们可以输入 PS_SOLID,然后我们在VS里面选中它点击右键转到定义可以看到这样的一些东西,如果你想用什么线就可以写入对应的参数。
那么后面的参数也就是对应的字面意思。
当我们都把这些设置好了之后就能很清楚的看到三个圆之间的差距啦。
如果我们觉得这个背景黑色看着很难受的画可以改成自己喜欢的颜色,当然背景也有自己的函数,我们其实可以发现,每一个设置基本是对应单词的意思,那么我们设置背景的时候也应该是这样子
设置背景 setbkcolor(颜色)
当让在设置之后还要有一个动作,我们需要清屏。因为在我们修改颜色之后,这个颜色是在底层,被我们的黑色覆盖了的,清屏之后才能显示出我们需要的那个颜色,这里也是有一个函数的
清屏 cleardveice();
当这两个函数都准备好之后我们就可以看到背景被改成了想要的颜色。
五:输入文字
我们说一个款游戏他不会只有游戏内容没有文字介绍吧,接下里我们就开始往界面里面插入文字,同样,插入文字也需要函数
outtextxy(int x,int y,字符串)
参数同理,也是我们需要把这段文字放在界面中的那个坐标点上。例如我们要输出一个符号
可以发现是完全没有问题的,但是当我们去输出一句话的时候它就报错了
这个函数的参数写的是字符串为什么输出字符串就报错了。这里有三个解决办法
1:在字符串的前面加一个大写L
2:用TEXT()把字符串包起来
3:进入项目->属性->配置属性->高级->字符集->使用多字节字符集
这里推荐使用第三种方法,因为后期会有很多的东西都需要涉及到,如果每次都加会很麻烦。
当我们修改之后字符串可以正常使用了。
知道了怎么输出文字,但如果我需要改变字体的大小颜色或者说字体的样式呢,同样这些都是有函数的
settextcolor(RGB(0,0,0)
settextstyle(高度,宽度,样式)
和字面意思一样,如果我需要什么颜色可以去画图版里面调自己想要颜色的数值输入进入就可以了,高度宽度也是输入自己想要的大小,样式可以直接输入计算机内有的所有字体。
这里还要说的是,当我们需要把文字放在一个图形上面的时候文字的背景会覆盖掉后面的图形,这里我们需要用到一个函数
setbkmode(TRANSPARENT)
对于参数部分同样可以转到定义看有哪些可以用的
六:怎么使文字居中
接下来我们在讲解一下怎么使文字能处于正中间,首先我们先话一个矩形(前面有讲解到举行的函数)
fillrectangle(int x,int y ,int x,int y)
为了后期可以改变矩形大小,这里的x,y建议使用变量
当画好这么一个矩形之后我们可以使用一个变量来存放我们想要的话,当这些东西准备好了之后就可以计算我们需要把这段文字放在哪里才叫居中了。
例如这是我们的一个界面一面装着我们画出来的矩形,要把文字放入中间的话我们先拿到界面宽度的一半,在拿到文字的一般,用界面宽度的一半减去文字宽度的一半就得到起点到文字开始的距离,再用从起点加到文字的这段距离就得到我们居中的起点位置,从这里开始放文字就能恰好把文字放入中心点。
七:总结关于EasyX的函数
1:initgraph(int,widt,int height,int flag=NULL)创建初始化一个窗口
2:width: 窗口宽度
3:height: 窗口高度
4:flag 窗口样式,默认为NULL(NOCLOSE(没有关闭窗口),NOMINIMIZE(没有最小化窗口),SHOWCONSOLE(创建图形窗口时维护控制台窗口))
5:closegraph(); 关闭绘图窗口
6:cleardevice(); 清空绘图设备 清平 初始化
画圆
7:cricle() 无边框无填充 参数(坐标 x,坐标 y,半径)
8:fillcricle() 有边框有填充 参数同上
9:solidcricle() 无边框有填充 参数同上
设置颜色
1:setfillcolor() 设置填充颜色 参数(颜色)
2:setlinecolor() 设置边框颜色 参数(颜色)
3:setlinestyle() 设置边框大小字体 参数(画什么线条,高度,宽度,字体)
窗口绘制文字
1:outextxy() 在窗口绘制文字 参数(坐标 x,坐标 y,字符串) (最后一个参数不能直接传入字符串否则会报错,是由于字符集导致的
解决办法
一:字符串前面加上一个大写的L
二:用TEXT()把字符串包起来
三:进入项目->属性->配置属性->高级->字符集->使用多字节字符集
2:settextcolor() 设置字体颜色 参数(颜色)
3:settextstyle() 设置字体样式 参数(高度,宽度,字体) 0表示自适应
4:setbkmode() 设置背景透明 参数(TRANSPARENT(透明))