easyx(c++图形库)与控制台游戏

<!DOCTYPE html>

easyx(c++图形库)与控制台游戏

easyx(c++图形库)与控制台游戏

下载库文件

参考

将include和lib文件夹里的内容,copy到对应的visual c++的文件夹里。(因为默认没有graphics.h)


表示库文件可以使用

调用库,使用库函数来些一个控制台游戏。如果你对库与库函数使用不熟悉,可以看看python third party。

目的是学习c++语法,我认为,学习编程和学习语言很像,比较编程也是一门语言,和计算机沟通的语言。即使英语单词背的再多,但不和别人交流如何提高沟通能力,不上台发言如何提高演讲能力,不书写作文如何提高文采。

所以我不打算一味地背单词,而是练习如何写一篇文章,如何把学到的词语灵活的运用上去。


现在学习如何写一个控制台的游戏,类似消消乐。首先,要画一个方框,里面有不同颜色的圆圈。源码1

如何在控制台画方框和圆圈呢?换句话说,如何调用合适的函数。


库文件有帮助文档,函数有详细的解释。

编译源码,得到图形如下。


这一步很简单,就是需要调用合适的函数,并正确传参。值得注意的是,调用函数需要初始化,最后需要调用结束函数closegraph(),释放资源,不能忘记这一点。否则编译运行后,发现没有任何图形。


函数原型:

在python中,主函数main可以放在后面,首先自定义函数xx,然后再main()中调用它,并不需要声明函数原型。

在c++中,主函数main放在第一位,在开头把所有自定义的函数告诉编译器,方便编译器不用在接下来的代码中找来找去,到底有几个自定义函数啊。void代表自定义函数没有返回值,没有返回值的意思是,你吩咐佣人,把客厅打扫一下,然后函数就去了。而有返回值,你吩咐佣人,给我倒杯咖啡,然后函数去了并且返回给你一杯咖啡。区别是,一个执行就执行了,不会再跟你说,我完成了你在给我一些任务吧;一个完成了会返回一个值,除了数组的任何东西,包括对象、结构


用随机数函数和圆圈的颜色相关联:

有个函数叫srand(),用来初始化随机数函数。rand()函数用来提供一个随机数。

任何数%1 = 任何数 (%求余数); 任何数%2 = 0 或1 ; 任何数%3 = 0或1或2

通过这种方式,可以得到一个包含从0-5的随机的数组。

定义数组方式:数组类型 数组名称[数组长度]={变量1,变量2,…… };

变量类型  变量名x = 数组名称[rand()%6];

都知道,数组名【数字】的意思代表数组中的某个元素。

这句伪代码的意思是,将数组的某个元素,赋值给变量x,以后就可以通过x,直接调用该元素

我们将该数组的变量定义为RGB颜色参数,于是就可以通过数组下标,和圆圈的颜色相关联。

源码2和示例图片。关于上面的文字,也是调用相应的函数绘制而成,没有什么难度。



下一步,绘制光标,在这里,也就是一个圆心直径长度的矩形。

我们通过改变光标的颜色,白色为可见,黑色为不可见,来实现光标的“移动”。实际上,并没有移动,不过是白色光标变得不可见了而已。如果按“上”(方向键),则纵坐标减去圆的直径……绘制白色光标。

因为绘制光标会执行多次,所以定义为一个函数。

struct结构:

数组只能存储同种类型的数据,而结构可以存储多种类型。

比如说,某个班级的学生信息有,姓名、班级、性别、学号、身高、成绩、家庭住址等等,这些数据有些是数字、有些是字符串,就不能放在一个数组里。但是可以通过定义一个struct,来记录这些信息。这些信息叫做该结构的成员。

struct关键字 结构名称studentsInfo{

       类型 变量;

       类型 变量;

};变量001,变量002

struct是自定义的数据类型,如果说我们定义的是班级学生信息,那么在后面的变量001,变量002,就是班级中某个学生。

变量001和变量002还有第二种定义方式

struct关键字 结构名称studentsInfo{

               类型char 变量姓名

               类型 变量;

};

结构名称studentsInfo  变量001;

结构名称studentsInfo  变量002;

可以通过,变量001.姓名,来得到该信息。当然,这样还不行,因为struct里只是定义了成员的类型,每个学生的信息都不同,所以在后面需要再详细地定义一下:

studentsInfo结构名称 变量001{

“王小明”;

“男”;

“14”;

}

于是我们可以定义一个struct的坐标。在这里,typedef是别名的意思,posType并不是定义的变量,而是struct position的另一种称呼方式(仅仅是写法不同,用法什么都是一样的)。这里使用第二种定义方式,posType 光标坐标;posType 小球坐标;