使用C语言来画出皮卡丘的教程(附代码)

 更新时间:2024年01月13日 14:48:30   投稿:yin  
在C语言中使用图形库画图需要引入graphics.h库,我们可以通过代码实现画出一个可爱的皮卡丘,将皮卡丘的绘制分为以下部分:耳朵、脸部、眼睛、嘴巴、手臂、腿部、尾巴,下面我们就来学习如何使用C语言编写画皮卡丘的代码

在C语言中使用图形库画图需要引入graphics.h库,我们可以通过代码实现画出一个可爱的皮卡丘,将皮卡丘的绘制分为以下部分:耳朵、脸部、眼睛、嘴巴、手臂、腿部、尾巴,下面我们就来学习如何使用C语言编写画皮卡丘的代码。

1. 简介

皮卡丘,是游戏《宝可梦》中的一种虚构生物。通过使用C语言的图形库,我们可以通过代码实现画出一个可爱的皮卡丘。下面,我们就来学习如何使用C语言编写画皮卡丘的代码。

2. 环境配置

2.1. 需要的库

在C语言中使用图形库画图需要引入graphics.h库,该库是Turbo C++ IDE自带的库,所以在Windows平台下,我们需要安装Turbo C++编译器。

2.2. 安装Turbo C++

可以使用Turbo C++ IDE 3.2版或后续版本,这种IDE已经停止开发多年,但是它包含了一个非常好用的图形库graphics.h。我们可以从以下网址中下载到Turbo C++ IDE:https://turboc.codeplex.com/

安装完成之后,我们就可以开始编写绘制皮卡丘的代码。

3. 画皮卡丘

我们可以将皮卡丘的绘制分为以下部分:耳朵、脸部、眼睛、嘴巴、手臂、腿部、尾巴。下面,我们按照这些部分逐一讲解绘制的过程和代码实现。

3.1. 耳朵

皮卡丘的耳朵是黄色的,上面有黑色的线条勾勒出轮廓。我们可以通过绘制一个圆的方式来制作耳朵,然后在圆的基础上通过画线条来勾勒出耳朵的轮廓。

// 画右耳朵
setfillstyle(SOLID_FILL, YELLOW);  // 设置填充颜色
circle(325, 135, 40);  // 画圆
floodfill(325, 135, WHITE);  // 填充颜色
// 画右耳朵轮廓
setcolor(BLACK);  // 设置画线条的颜色
arc(325, 135, 50, 140, 40);  // 画圆弧
arc(345, 109, 315, 160, 35);

我们可以在画左耳朵的时候使用 symmetry function 将绘制左右耳朵的代码合并。

3.2. 脸部

皮卡丘的脸部是黄色的,下巴部分往下凸出,我们可以通过画圆来制作皮卡丘的脸部。

同时,脸的底部还需要加上两个圆弧勾勒出下巴的形状。

// 画脸
setfillstyle(SOLID_FILL, YELLOW);  // 设置填充颜色
circle(325, 220, 70);  // 画圆
floodfill(325, 220, WHITE);  // 填充颜色
// 画下巴
setcolor(BLACK);  // 设置画线条的颜色
arc(325, 230, 0, 180, 35);  // 画圆弧
arc(325, 230, 180, 360, 35);

通过调整圆的半径,可以实现分别画大脸和小脸的效果。

3.3. 眼睛

这里我们需要绘制两个相同的眼睛,眼睛有黑色边框,中间填充成白色,接着在白色中间描绘出黑色的瞳孔。我们可以通过画圆和画线条的方式来完成绘制。

当然,如果你觉得眼睛不够可爱,可以为它加上眼皮和睫毛。

// 画眼睛
setcolor(BLACK);  // 设置画线条的颜色
circle(276, 189, 7);   // 画圆
circle(276, 189, 2);
setfillstyle(SOLID_FILL, WHITE);  // 设置填充颜色
circle(276, 189, 6);  // 画圆
floodfill(276, 189, BLACK);  // 填充颜色
setcolor(BLACK);
circle(276, 189, 4);
// 画右眼
setcolor(BLACK);
circle(374, 189, 7);
circle(374, 189, 2);
setfillstyle(SOLID_FILL, WHITE);
circle(374, 189, 6);
floodfill(374, 189, BLACK);
setcolor(BLACK);
circle(374, 189, 4);

我们可以通过设置画布颜色,来给眼睛加上眼皮。

// 画眼皮
setfillstyle(SOLID_FILL,RGB(250, 195, 165));
pieslice(276, 208, 267, 293, 25);  // 画上眼皮
pieslice(374, 208, 247, 272, 25);
setfillstyle(SOLID_FILL,BLACK);
pieslice(276, 215, 267, 293, 25);  // 画下眼皮
pieslice(374, 215, 247, 272, 25);

3.4. 嘴巴

皮卡丘的嘴巴是粉红色的,嘴巴总体呈现为“∩ ”的形态,嘴唇勾勒出一个“M”的形状。我们可以通过画圆和画线条来完成嘴巴的绘制。

// 画嘴巴
setfillstyle(SOLID_FILL, RGB(248, 118, 91));
pieslice(325, 250, 0, 180, 32);  // 画弧形
setcolor(BLACK);
arc(325, 250, 0, 180, 32);
// 画嘴唇
setfillstyle(SOLID_FILL, RGB(241, 65, 103));
pieslice(325, 250, 0, 90, 32);
pieslice(325, 250, 180, 270, 32);

3.5. 手臂

绘制皮卡丘的手臂需要绘制两只手臂,我们可以使用正弦函数和余弦函数来实现手臂的曲线,然后连接点画成曲线。

// 画左手臂
setcolor(BLACK);
moveto(250, 270);
for(int i = 0; i <= 90; i++) {
    double angle = i * PI / 180.0;
    int x = (int)(250 + 40 * cos(angle));
    int y = (int)(270 + 30 * sin(angle));
    lineto(x, y);
}
// 画右手臂
moveto(400, 270);
for(int i = 0; i <= 90; i++) {
    double angle = i * PI / 180.0;
    int x = (int)(400 + 40 * cos(angle));
    int y = (int)(270 + 30 * sin(angle));
    lineto(x, y);
}
// 连接左右手臂
moveto(250, 270);
lineto(400, 270);

3.6. 腿部

皮卡丘的腿有两只,我们可以参考手臂的绘制方式来绘制腿部。

// 画左腿
moveto(300, 340);
for(int i = 0; i <= 90; i++) {
    double angle = i * PI / 180.0;
    int x = (int)(300 + 20 * cos(angle));
    int y = (int)(340 + 30 * sin(angle));
    lineto(x, y);
}
// 画右腿
moveto(350, 340);
for(int i = 0; i <= 90; i++) {
    double angle = i * PI / 180.0;
    int x = (int)(350 + 20 * cos(angle));
    int y = (int)(340 + 30 * sin(angle));
    lineto(x, y);
}
// 连接左右腿
moveto(300, 340);
lineto(350, 340);

3.7. 尾巴

皮卡丘的尾巴是黄色的,尾巴末端呈现闪电状,我们可以通过画线条的方式来完成尾巴的绘制。

// 画尾巴
setcolor(BLACK);
moveto(150, 310);
lineto(180, 297);
lineto(190, 310);
lineto(190, 320);
lineto(180, 333);
lineto(150, 320);

4. 总代码

下面是完整的绘制皮卡丘的代码。

#include<graphics.h>
#include<math.h>
#define PI 3.141592654
int main() {
    initwindow(600, 450); // 创建画布
    // 画右耳朵
    setfillstyle(SOLID_FILL, YELLOW); 
    circle(325, 135, 40);
    floodfill(325, 135, WHITE);
    // 画右耳朵轮廓
    setcolor(BLACK);
    arc(325, 135, 50, 140, 40);
    arc(345, 109, 315, 160, 35);
    // 画左耳朵
    setfillstyle(SOLID_FILL, YELLOW); 
    circle(225, 135, 40);
    floodfill(225, 135, WHITE);
    // 画左耳朵轮廓
    setcolor(BLACK);
    arc(225, 135, 40, 130, 40);
    arc(195, 109, 20, 50, 35);
    // 画脸
    setfillstyle(SOLID_FILL, YELLOW);
    circle(325, 220, 70);
    floodfill(325, 220, WHITE);
    // 画下巴
    setcolor(BLACK);
    arc(325, 230, 0, 180, 35);
    arc(325, 230, 180, 360, 35);
    // 画左眼
    setcolor(BLACK);
    circle(276, 189, 7);
    circle(276, 189, 2);
    setfillstyle(SOLID_FILL, WHITE);
    circle(276, 189, 6);
    floodfill(276, 189, BLACK);
    setcolor(BLACK);
    circle(276, 189, 4);
     // 画右眼
    setcolor(BLACK);
    circle(374, 189, 7);
    circle(374, 189, 2);
    setfillstyle(SOLID_FILL, WHITE);
    circle(374, 189, 6);
    floodfill(374, 189, BLACK);
    setcolor(BLACK);
    circle(374, 189, 4);
    // 画眼皮
    setfillstyle(SOLID_FILL,RGB(250, 195, 165));
    pieslice(276, 208, 267, 293, 25);
    pieslice(374, 208, 247, 272, 25);
    setfillstyle(SOLID_FILL,BLACK);
    pieslice(276, 215, 267, 293, 25);
    pieslice(374, 215, 247, 272, 25);
     // 画嘴巴
    setfillstyle(SOLID_FILL, RGB(248, 118, 91));
    pieslice(325, 250, 0, 180, 32);
    setcolor(BLACK);
    arc(325, 250, 0, 180, 32);
    // 画嘴唇
    setfillstyle(SOLID_FILL, RGB(241, 65, 103));
    pieslice(325, 250, 0, 90, 32);
    pieslice(325, 250, 180, 270, 32);
    // 画左手臂
    setcolor(BLACK);
    moveto(250, 270);
    for(int i = 0; i <= 90; i++) {
        double angle = i * PI / 180.0;
        int x = (int)(250 + 40 * cos(angle));
        int y = (int)(270 + 30 * sin(angle));
        lineto(x, y);
    }
    // 画右手臂
    moveto(400, 270);
    for(int i = 0; i <= 90; i++) {
        double angle = i * PI / 180.0;
        int x = (int)(400 + 40 * cos(angle));
        int y = (int)(270 + 30 * sin(angle));
        lineto(x, y);
    }
    // 连接左右手臂
    moveto(250, 270);
    lineto(400, 270);
    // 画左腿
    moveto(300, 340);
    for(int i = 0; i <= 90; i++) {
        double angle = i * PI / 180.0;
        int x = (int)(300 + 20 * cos(angle));
        int y = (int)(340 + 30 * sin(angle));
        lineto(x, y);
    }
    // 画右腿
    moveto(350, 340);
    for(int i = 0; i <= 90; i++) {
        double angle = i * PI / 180.0;
        int x = (int)(350 + 20 * cos(angle));
        int y = (int)(340 + 30 * sin(angle));
        lineto(x, y);
    }
    // 连接左右腿
    moveto(300, 340);
    lineto(350, 340);
    // 画尾巴
    setcolor(BLACK);
    moveto(150, 310);
    lineto(180, 297);
    lineto(190, 310);
    lineto(190, 320);
    lineto(180, 333);
    lineto(150, 320);
    getch(); 
    closegraph(); // 关闭画布    
    return 0;
}

使用上述代码,就可以画出一个可爱的皮卡丘了!

5. 总结

通过使用C语言绘制皮卡丘,我们了解了C语言调用图形库进行图形。

到此这篇关于使用C语言来画出皮卡丘的教程附代码的文章就介绍到这了,更多相关C语言画皮卡丘内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Ubuntu16.04下配置VScode的C/C++开发环境

    Ubuntu16.04下配置VScode的C/C++开发环境

    这篇文章主要介绍了Ubuntu16.04下配置VScode的C/C++开发环境的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • VScode搭建C/C++开发环境的详细过程

    VScode搭建C/C++开发环境的详细过程

    最近迷上了vscode,小巧美观,最主要的是全平台,但是vscode并不是ide,必须得自己配置环境,下面这篇文章主要给大家介绍了关于VScode搭建C/C++开发环境的详细过程,需要的朋友可以参考下
    2023-06-06
  • 简单谈谈C++ 头文件系列之(bitset)

    简单谈谈C++ 头文件系列之(bitset)

    我们要使用bitset,首先需要包含头文件bitset。和vector对象不一样的是bitset类型对象的区别仅在其长度而不在其类型。在定义bitset的时候,要明确bitset包含了多少位,须在尖括号内给出它的长度值。长度值必须定义为整形字面值常量或是已用常量值初始化的整型的const对象
    2017-02-02
  • QT实现贪吃蛇游戏代码详解

    QT实现贪吃蛇游戏代码详解

    本文主要为大家详细介绍了在QT中实现贪吃蛇游戏的详细教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C++ this原理与可变参数及友元函数友元类分步详解用法

    C++ this原理与可变参数及友元函数友元类分步详解用法

    可变参数模板(variadic templates)是C++11新增的强大的特性之一,它对模板参数进行了高度泛化,能表示0到任意个数、任意类型的参数,这篇文章主要介绍了C++ this原理与可变参数及友元函数友元类
    2022-11-11
  • C++运行时类型识别与转换实现方法

    C++运行时类型识别与转换实现方法

    运行时类型识别可能被认为是C++中一个”次要“的特征,当程序员在编程过程中陷入非常困难的境地时,实用主义将会帮助他走出困境
    2022-10-10
  • Qt键盘事件实现图片在窗口上下左右移动

    Qt键盘事件实现图片在窗口上下左右移动

    这篇文章主要为大家详细介绍了Qt键盘事件实现图片在窗口上下左右移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C++堆栈类模板实现代码

    C++堆栈类模板实现代码

    这篇文章主要为大家详细介绍了C++堆栈类模板的实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • QT实现定时关闭消息提示框

    QT实现定时关闭消息提示框

    这篇文章主要介绍了软件利用Qt简单实现消息提示框可定时自动关闭,文中的示例代码讲解详细,对我们;了解QT有一定的帮助,感兴趣的可以学习一下
    2022-01-01
  • c语言中exit和return的区别点总结

    c语言中exit和return的区别点总结

    小编今天给大家整理了关于c语言中exit和return的不同点及相关基础知识点,有兴趣的朋友们可以跟着学习下。
    2021-10-10

最新评论