• 《Python趣味工具》——自制emoji2(2)


    今天,我们将会完成以下2个内容:

    1. 绘制静态emoji
    2. 总结turtle中常用的绘图函数

    一、绘制静态emoji:

    绘制方法:拆解绘制法

    将绘图步骤拆解完成后,标记出各个部分的起始坐标点位,方便后面绘图。

    在这里插入图片描述


    ✨ 画脸:

    首先我们绘制圆脸部分,主要步骤是:

    1.定义一个绘制圆脸的函数
    2.用黑色画笔画圆
    3.用金色填充圆的内部

    在这里插入图片描述
    示例代码如下:

    # 从turtle模块中导入所有函数
    from turtle import *
    # 定义draw_face()函数绘制脸部
    
    # 首先,定义一个draw_face()函数绘制脸部
    def draw_face():
    # 进入函数的主体部分后,第一步需要将小乌龟放置到我们期待的位置:(-120,0)
        # 抬起画笔
        penup()
        
        # 移动到坐标点为(-120,0)的地方
        goto(-120,0)
        
        # 落笔
        pendown()
        
        # 将画笔颜色设置为黑色"black"
        pencolor("black")
        
        # 将画笔粗细设置为4
        pensize(4)
        
        # 调整海龟朝向-90度方向
        seth(-90)
        
        # 开始填充颜色
        begin_fill()
        
        # 画圆,圆的半径为130,圆心角为360度
        circle(130,360)
        
        # 填充颜色为"gold"
        fillcolor("gold")
        
        # 停止填充颜色
        end_fill()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    相关步骤如下:

    1.定义函数,设置初始位置
    为了避免留下小乌龟从初始位置移动到(-120,0)的轨迹,我们可 以:
    🐢penup()抬起小乌龟
    🐢goto()把小乌龟移动到目标位置
    🐢再使用pendown()放下小乌龟

    2.设置颜色、大小和朝向
    设置画笔颜色和大小:
    🐢使用pencolor()将画笔颜色设置为黑色’‘black’',
    🐢使用pensize()函数将画笔粗细设置为4.

    3.设置画笔的朝向:
    为了圆脸的位置正确,需要把小乌龟的头竖直向下放置:
    在这里插入图片描述
    使用seth()函数,设置画笔朝向-90度的方向开始绘制。
    在这里插入图片描述
    ⭐️两种调整角度的方法

    • 1.相对角度
      以海龟的朝向为基准进行转向。
      例如:left(),right()
    • 2.绝对角度
      以坐标轴方向为基准调整角度。
      例如:seth()
      在这里插入图片描述

    4.绘制圆并填充颜色
    绘制圆:
    使用circle()函数设置圆的半径为130,圆心角度为360度
    填充颜色:
    🐢用fillcolor()函数将填充颜色设置为"gold"
    🐢用begin_fill()函数设置填充起点
    🐢用end_fill()函数设置填充终点


    ✨绘制嘴巴:

    绘制嘴巴可以分为以下几步:

    1.画笔移动到坐标点(-80,-10)的位置。
    2.朝向-90度的方向
    3.绘制一个半径为90的半圆。

    在这里插入图片描述

    # 定义draw_mouth() 函数绘制嘴巴   
    def draw_mouth():
        # 抬起画笔
        penup()
        
        # 移动到坐标点为(-80,-10)的位置
        goto(-80,-10)
        
        # 落笔
        pendown()
        
        # 调整海龟朝向-90度方向
        seth(-90)
        
        # 绘制一个半径为90,圆心角为180的半圆
        circle(90,180)  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    相关步骤如下:

    1.设置画笔的初始位置:
    和前面绘制圆脸一样,我们也需要使用penup()等函数,将动小乌龟到目标位置:(-80,-10)

    2.设置画笔的朝向:
    为了嘴巴的位置正确,我们也需要把小乌龟的头竖直向下放置:seth(-90)

    3.绘制嘴巴:
    使用circle()函数设置圆的半径为90,圆心角度为180度


    ✨绘制眼白:

    思考一下,眼白可以怎么绘制呢?

    1.从嘴角位置向上直走60步
    2.将海龟角度设置为155度
    3.将画笔颜色设置为白色,粗度为20
    4.绘制一个半径为100,圆心角为45度的圆弧
    在这里插入图片描述

    绘制眼白-Part1:

    在这里插入图片描述
    相关步骤如下:

    1.设置画笔的初始位置:
    🐢移动到目标位置前,使用penup()隐藏移动痕迹
    🐢在绘制完嘴巴的基础上,我们直接前进60步,即可到达目标位置:forward(60)
    🐢到达后,使用pendown()将小乌龟放置到画布上~

    2.设置画笔的朝向:
    将海龟角度设置为155度:seth(155)

    3.设置画笔的粗细和颜色:
    🐢使用pencolor()将画笔颜色设置为白色’‘white’',
    🐢使用pensize()函数将画笔粗细设置为20.

    4.绘制眼白:
    使用circle()函数设置圆的半径为100,圆心角度为45度

    示例代码如下:

    # 定义eyes_white()函数绘制眼白   
    def eyes_white():
        # 抬起画笔
        penup()
        
        # 往前直走60步
        forward(60)
        
        # 将角度调整为155度
        seth(155)
        
        # 落笔
        pendown()
        
        # 设置画笔粗细为20
        pensize(20)
        
        # 设置画笔颜色为"white"
        pencolor("white")
        
        # 绘制一个半径为100,圆心角为45的弧形
        circle(100,45)
        
        # 抬笔
        penup()
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    ps.绘制完记得抬起小乌龟


    绘制眼白—part2:

    在这里插入图片描述

    绘制第二部分的眼白也是类似的:

    1. 抬起画笔,朝向180度的方向(正左)移动40步
    2. 角度调整为155度
    3. 绘制一个半径为100,圆心角为45度的圆弧
    4. 抬起画笔,朝向180度的方向(正左)移动40步
    5. 角度调整为155度
    6. 绘制一个半径为100,圆心角为45度的圆弧

    在这里插入图片描述


    ✨绘制黑眼珠:

    绘制黑眼珠的方法和绘制眼白的方法是类似的

    1.画笔朝向0度方向,向前移动6步
    2.设置画笔粗细为15,颜色为黑色
    3.画一个半径为5的圆
    4.向前移动110步,再绘制一个半径为5的圆

    在这里插入图片描述


    太棒啦!现在我们已经完成了滑稽emoji的绘制~

    回顾绘制的过程:
    1.将图形拆解为不同的区域
    2.分区进行绘制
    3.定义函数使区域更明晰

    在绘制你需要的图形时也可以使用这样的方法哦~

    在这里插入图片描述

    三、完整代码:

    # 导入turtle中的全部函数
    from turtle import *
    # 定义draw_face()函数绘制脸部
    def draw_face():
        # 抬起画笔
        penup()
        # 移动到坐标点为(-120,0)的地方
        goto(-120,0)
        # 落笔
        pendown()
        # 将画笔颜色设置为黑色"black"
        pencolor("black")
        # 将画笔粗细设置为4
        pensize(4)
        # 调整海龟朝向-90度方向
        seth(-90)
        # 开始填充颜色
        begin_fill()
        # 画圆,圆的半径为130,圆心角为360度
        circle(130,360)
        # 填充颜色为"gold"
        fillcolor("gold")
        # 停止填充颜色
        end_fill()
    # 定义draw_mouth() 函数绘制嘴巴   
    def draw_mouth():
        # 抬起画笔
        penup()
        # 移动到坐标点为(-80,-10)的位置
        goto(-80,-10)
        # 落笔
        pendown()
        # 调整海龟朝向-90度方向
        seth(-90)
        # 绘制一个半径为90,圆心角为180的半圆
        circle(90,180)
    
    # 定义eys_white()函数绘制眼白   
    def eyes_white():
        # 使用penup()函数抬起画笔
        penup()
        # 使用forward()函数往前直走60步
        forward(60)
        # 使用seth()函数将角度调整为155度
        seth(155)
        # 使用pendown()函数落笔
        pendown()
        # 使用pensize()函数设置画笔粗细为20
        pensize(20)
        # 使用pencolor()函数设置画笔颜色为"white"
        pencolor("white")
        # 使用circle()函数绘制一个半径为100,圆心角为45的弧形
        circle(100,45)
        # 使用penup()函数抬笔
        penup()
        # 使用seth()函数朝向180度方向
        seth(180)
        # 使用forward()函数向前走40步
        forward(40)
        # 使用seth()函数将角度调整为155度
        seth(155)
        # 使用pendown()函数落笔
        pendown()
        # 使用circle()函数绘制一个半径为100,圆心角为45度的圆弧
        circle(100,45)
        # 使用penup()函数抬笔
        penup()
    
    #  定义一个eyes_black()函数绘制黑眼珠
    def eyes_black():
        # 使用seth()函数将角度设置为0
        seth(0)
        # 使用forward()函数前进6步
        forward(6)
        # 使用pendown()函数落笔
        pendown()
        # 使用pensize()函数设置画笔粗细为15
        pensize(15)
        # 使用pencolor()函数设置画笔颜色为"black"
        pencolor("black")
        # 使用circle()函数绘制一个半径为5,圆心角为360度
        circle(5,360)
        # 使用penup()函数抬笔
        penup()
        # 使用forward()函数前进110步
        forward(110)
        # 使用pendown()函数落笔
        pendown()
        # 使用circle()函数绘制一个半径为5的圆
        circle(5,360)
        # 使用hideturtle()函数隐藏画笔
        hideturtle()
        
    # 调用draw_face()函数画脸
    draw_face()
    # 调用draw_mouth()函数画嘴巴
    draw_mouth()
    # 调用eyes_white()函数画白眼珠
    eyes_white()
    # 调用eyes_black()函数画黑眼珠
    eyes_black()
    # 调用done()暂停
    done()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103

    四、函数函数总结:

    学到现在或许你有一些疑问:这么多函数太容易记混了,有没有办法归类呢?

    在这里我们可以把turtle中常用函数分成三类:

    1.运动控制命令
    2.画笔控制命令
    3.全局控制命令


    运动控制命令:

    1.前进后退
    2.转向
    3.控制速度
    4.移动到固定点位
    5.画圆
    等等…………

    在这里插入图片描述


    画笔控制命令:

    1.改变画笔的大小和颜色
    2.控制画笔的显示和隐藏
    3.控制填充颜色
    等等…………

    在这里插入图片描述


    全局控制命令:

    全局控制命令是指可以应用在整个画布和绘画过程中的命令。

    1.清空窗口
    2.写文本
    3.控制动画播放

    在这里插入图片描述


  • 相关阅读:
    泛型概述(下):泛型实现机制
    xmake经验总结1:解决c++ future/promise抛出std::system_error的问题
    阿里云高校计划学生认证领无门槛代金券和教师验证方法
    全国临床遗传学及遗传咨询培训在湘举行,为18省培训百名医师
    vscode基于cmake安装opencv库
    vue3 vue-router4 No match found for location with path “/home“
    多线程和并发问题详解
    fpga驱动4K edp屏幕
    React魔法堂:echarts-for-react源码略读
    代码随想录算法训练营第六十五天 | 岛屿数量 深搜、岛屿数量 广搜、岛屿的最大面积
  • 原文地址:https://blog.csdn.net/weixin_73453526/article/details/132675811