当前位置 博文首页 > 是Dream呀的博客:用python画机器猫--哆啦A梦,开干!

    是Dream呀的博客:用python画机器猫--哆啦A梦,开干!

    作者:[db:作者] 时间:2021-08-13 09:40

    python 画哆啦A梦

    大家好,我是Dream,今天在视频中无意间看到了哆啦A梦,这让我勾起了许多童年回忆,不知道大家有没有看过哆啦A梦呢?
    那我们能不能用python画出哆啦A梦来呢?话不多说,让我们行起来吧!
    先看一下成品吧,是不是栩栩如生呢,哈哈哈
    在这里插入图片描述

    说明:
    在这里主要用到了定义函数和turtle的一些方法,有兴趣的小伙伴可以去学习一下turtle,我可以先向大家介绍一下turtle
    tuetle主要包括三个部分
    1.画布(canvas)
    画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。
    设置画布的大小:
    如:turtle.screensize(800,600, “green”)
    turtle.screensize() #返回默认大小(400, 300)
    import turtle as t
    t.speed(10)
    t.pensize(8)
    t.hideturtle()
    t.screensize(500, 500, bg=‘white’)
    turtle.setup(width=0.5, height=0.75, startx=None, starty=None),参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
    如:
    turtle.setup(width=0.6,height=0.6)
    turtle.setup(width=800,height=800, startx=100, starty=100)
    2. 画笔的状态

    在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。

    3. 画笔的属性

    画笔(画笔的属性,颜色、画线的宽度等)

    turtle.pensize():设置画笔的宽度;

    turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", “red”,也可以是RGB 3元组。

    turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
    接下来代码展示:

    #encoding=utf-8
    #Drawcat 画多啦A梦
    from turtle import *
    # 无轨迹跳跃
    def my_goto(x, y):
        penup()
        goto(x, y)
        pendown()
    # 眼睛
    def eyes():
        tracer(False)
        a = 2.5
        for i in range(120):
            if 0 <= i < 30 or 60 <= i < 90:
                a -= 0.05
                lt(3)
                fd(a)
            else:
                a += 0.05
                lt(3)
                fd(a)
        tracer(True)
    # 胡须
    def beard():
        my_goto(-37, 135)
        seth(165)
        fd(60)
        my_goto(-37, 125)
        seth(180)
        fd(60)
        my_goto(-37, 115)
        seth(193)
        fd(60)
        my_goto(37, 135)
        seth(15)
        fd(60)
        my_goto(37, 125)
        seth(0)
        fd(60)
        my_goto(37, 115)
        seth(-13)
        fd(60)
    # 嘴巴
    def mouth():
        my_goto(5, 148)
        seth(270)
        fd(100)
        seth(0)
        circle(120, 50)
        seth(230)
        circle(-120, 100)
    # 围巾
    def scarf():
        fillcolor('#e70010')
        begin_fill()
        seth(0)
        fd(200)
        circle(-5, 90)
        fd(10)
        circle(-5, 90)
        fd(207)
        circle(-5, 90)
        fd(10)
        circle(-5, 90)
        end_fill()
    # 鼻子
    def nose():
        my_goto(-10, 158)
        fillcolor('#e70010')
        begin_fill()
        circle(20)
        end_fill()
    # 黑眼睛
    def black_eyes():
        seth(0)
        my_goto(-20, 195)
        fillcolor('#000000')
        begin_fill()
        circle(13)
        end_fill()
        pensize(6)
        my_goto(20, 205)
        seth(75)
        circle(-10, 150)
        pensize(3)
        my_goto(-17, 200)
        seth(0)
        fillcolor('#ffffff')
        begin_fill()
        circle(5)
        end_fill()
        my_goto(0, 0)
    # 脸
    def face():
        fd(183)
        fillcolor('#ffffff')
        begin_fill()
        lt(45)
        circle(120, 100)
        seth(90)
        eyes()
        seth(180)
        penup()
        fd(60)
        pendown()
        seth(90)
        eyes()
        penup()
        seth(180)
        fd(64)
        pendown()
        seth(215)
        circle(120, 100)
        end_fill()
    # 头型
    def head():
        penup()
        circle(150, 40)
        pendown()
        fillcolor('#00a0de')
        begin_fill()
        circle(150, 280)
        end_fill()
    # 画哆啦A梦
    def Doraemon():
        # 头部
        head()
        # 围脖
        scarf()
        # 脸
        face()
        # 红鼻子
        nose()
        # 嘴巴
        mouth()
        # 胡须
        beard()
        # 身体
        my_goto(0, 0)
        seth(0)
        penup()
        circle(150, 50)
        pendown()
        seth(30)
        fd(40)
        seth(70)
        circle(-30, 270)
        fillcolor('#00a0de')
        begin_fill()
        seth(230)
        fd(80)
        seth(90)
        circle(1000, 1)
        seth(-89)
        circle(-1000, 10)
        # print(pos())
        seth(180)
        fd(70)
        seth(90)
        circle(30, 180)
        seth(180)
        fd(70)
        # print(pos())
        seth(100)
        circle(-1000, 9)
        seth(-86)
        circle(1000, 2)
        seth(230)
        fd(40)
        # print(pos())
        circle(-30, 230)
        seth(45)
        fd(81)
        seth(0)
        fd(203)
        circle(5, 90)
        fd(10)
        circle(5, 90)
        fd(7)
        seth(40)
        circle(150, 10)
        seth(30)
        fd(40)
        end_fill()
        # 左手
        seth(70)
        fillcolor('#ffffff')
        begin_fill()
        circle(-30)
        end_fill()
        # 脚
        my_goto(103.74, -182.59)
        seth(0)
        fillcolor('#ffffff')
        begin_fill()
        fd(15)
        circle(-15, 180)
        fd(90)
        circle(-15, 180)
        fd(10)
        end_fill()
        my_goto(-96.26, -182.59)
        seth(180)
        fillcolor('#ffffff')
        begin_fill()
        fd(15)
        circle(15, 180)
        fd(90)
        circle(15,