用cpp画出哆啦A梦 您所在的位置:网站首页 画啦啦软件 用cpp画出哆啦A梦

用cpp画出哆啦A梦

2024-07-08 21:34| 来源: 网络整理| 查看: 265

        c语言的初步学习临近尾声,但内心总有些空虚。学习过程中一直是围绕着终端、键盘、显示屏、文件来实现功能,总觉得少了点可视可见的成果。一方面是拓展学习更多的内容,另一方面是为了满足我用c语言制作游戏的兴趣。机缘巧合之下,在某站看到了有大佬的讲解视频,便进行了一些学习。

        首先大佬讲解了制作游戏及绘画的基本条件:vs和easyx。前者不用过多介绍,很多人都很熟悉,后者是一个简单易用的图形化库,里边包含了很多绘制图形的函数以及展示用的画板。因为这个图形库只能与vs搭配所以使用环境上会比较局限。

        感兴趣的小伙伴可以在下述链接中获取vs2022和easyx图形库。Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com)

EasyX Graphics Library for C++

        vs如何安装网上有很多教程,我就不啰嗦了。easyx安装后会自动识别当前vs的版本,点击对应的安装按钮即可。准备工作结束后就是实际上手写代码了。首先创建cpp的源文件,因为easyx图形库只支持cpp,不支持c。其次在头文件部分引入,这样才能调用相应的函数。先把框架搭起来。

#include #include int main() { return 0; }

首先我们认识几个包含的函数:

//此函数的功能类似于创建一块画布。第一个参数为画布长,第二个为画布宽 initgraph(1024, 1024); //此函数的功能为将画布的背景色改为指定颜色,这里我选择的是白色。括号内是大写的颜色英文 setbkcolor(WHITE); //此函数的功能为用当前背景色清除画布上的内容,因为画布在创建时已经初始化为黑色, //此时想改成白色就需要初始化后修改才会生效 cleardevice(); //此函数的功能为设定绘画用线条的颜色,同样用颜色的大写英文来修改 setlinecolor(BLACK); //此函数用于修改线条的类型和粗细。前者是线条类型这里选择连续实线,后者是粗细以像素为单位。 setlinestyle(PS_SOLID, 10); //此函数用于关闭画布。 closegraph();

以上函数是绘画的基础,接下来在介绍几个图形函数:

//此函数的功能是设置填充色 setfillcolor(BLUE); //此函数的功能是画一个椭圆,参数分别为矩形的左上顶点和右下顶点。 fillellipse(50, 50, 990, 931); //此函数的功能是画圆,参数依次为圆心的x轴坐标、y轴坐标、半径 solidcircle(400, 330,25); //此函数的功能是画一个带描边填充的圆 fillcircle(469, 375, 35); //此函数的功能是画一条直线,前两个参数为起点坐标,后两个为终点坐标。 line(469, 410, 469, 670); //此函数的功能是画一个弧线,前两个参数为矩形的左上角坐标,中间两个为矩形的左下角坐标 //后两个为弧线的起始角和终止角。 arc(240, 510, 789, 827, PI, 2 * PI);

认识了需要使用的所有函数后,接下来要讲讲大部分函数都会用到的一个参数:坐标点。

我们创建的画布会有一个物理原点,就是最左上角的那个点。以这个点从左向右射出的线就是x轴,从这个点由上到下射出的线就是y轴。有了x轴和y轴那我们就可以确定点坐标了。在画布内只要不更改逻辑原点,那么x和y的坐标都是正数。

再讲讲画椭圆为什么需要矩形的顶点坐标,因为该函数是采取矩形内切的方式画圆,所以只要确定了矩形的左上顶点和左下顶点就可以确定矩形,也就可以确定椭圆的形状了。

我们首先创建一块1024*1024大小的画布,随后设置画布的背景色、线条的颜色、粗细。接下来就是具体的绘画了。我们从大到小开始绘画,首先用椭圆函数画出哆啦A梦脑袋最外围蓝色的一圈。

setfillcolor(BLUE);//设置填充色 fillellipse(50, 50, 990, 931);//ellipse是椭圆,fill是填充图形

随后是脸部白色的部分,基本一致。难点就在于对坐标的把握,需要慢慢调试:

setfillcolor(WHITE); fillellipse(115, 280, 919, 931);

接下来依次是左眼、右眼及左眼高光、右眼高光的代码:

setfillcolor(WHITE); fillellipse(270, 150, 470,400);//左眼 setfillcolor(WHITE); fillellipse(470, 150, 670, 400);//右眼 setfillcolor(BLACK); solidcircle(400, 330,25);//左眼瞳孔,是圆 setfillcolor(BLACK); solidcircle(530, 330, 25);//右眼瞳孔 setfillcolor(WHITE); solidcircle(400, 330, 10);//左眼高光,是圆 setfillcolor(WHITE); solidcircle(530, 330, 10);//右眼高光

下来是红鼻子、一根竖线、嘴和胡子:

setfillcolor(RED); fillcircle(469, 375, 35);//鼻子,填充色为红色,依旧是圆 line(469, 410, 469, 670);//竖线,用两个点确定 //画圆弧的方法与画椭圆一样,都是在矩形内做内切。但是要确定角度问题 //所以需要引入pi来表达起始角和终止角,这里我们要画180度的弧线,所以是pi和2*pi arc(240, 510, 789, 827, PI, 2 * PI); //胡子就是六条线段,在左右两边各找到相近的6个点,两两相连就可以了。 line(125, 313, 296, 410); line(83, 444, 270, 474); line(83, 595, 262, 527); line(819, 414, 990, 320); line(845, 478, 1029, 448); line(853, 542, 1029, 660);

完整代码如下:

#include #include #include #define PI 3.14 int main() { initgraph(1024, 1024); setbkcolor(WHITE); cleardevice(); setlinecolor(BLACK); setlinestyle(PS_SOLID, 10); //脸蓝色部分 setfillcolor(BLUE); fillellipse(50, 50, 990, 931);//ellipse是椭圆 Sleep(1000); //脸白色部分 setfillcolor(WHITE); fillellipse(115, 280, 919, 931);//ellipse Sleep(1000); //左眼轮廓 setfillcolor(WHITE); fillellipse(270, 150, 470,400);//ellipse Sleep(1000); //右眼轮廓 setfillcolor(WHITE); fillellipse(470, 150, 670, 400);//ellipse Sleep(1000); //左眼瞳孔 setfillcolor(BLACK); solidcircle(400, 330,25);//圆 Sleep(1000); //右眼瞳孔 setfillcolor(BLACK); solidcircle(530, 330, 25);//圆 Sleep(1000); //左眼高光 setfillcolor(WHITE); solidcircle(400, 330, 10);//圆 Sleep(1000); //右眼高光 setfillcolor(WHITE); solidcircle(530, 330, 10);//圆 Sleep(1000); //鼻子 setfillcolor(RED); fillcircle(469, 375, 35);//圆 Sleep(1000); //竖线 line(469, 410, 469, 670); Sleep(1000); // 嘴巴 arc(240, 510, 789, 827, PI, 2 * PI); Sleep(1000); //胡子 line(125, 313, 296, 410); line(83, 444, 270, 474); line(83, 595, 262, 527); line(819, 414, 990, 320); line(845, 478, 1029, 448); line(853, 542, 1029, 660); getchar(); closegraph; return 0; }

因为需要在画布上展示绘画过程,所以增加了sleep函数来进行操作延迟。最终效果就是这样。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有