决定了,儿童节我们用python画这个...

0f462f2ad817c9786e0196597f15819c.gif

outside_default.png

前言

    大家好,我是菜鸟小白。明天就是一年一度的六一儿童节,虽然我们早已过了那个年纪,但是不妨碍我们拥有一颗年轻的过节心呀。那今天我们通过学习python的Turtle库来画一个哆啦A梦,共同庆祝六一儿童节呗。

    下面这个就是我们期望完成的目标。

e1be3afa2fedf76a07b2290af2ae17ec.png

outside_default.png

Turtle简介

    Turtle最早来自于LOGO语言,是专门用于小孩子学习编程的,通过编程模拟一只turtle(海龟)在画板上爬行绘制图案,后来很多高级语言都移植了海龟绘图,python从2.6之后也将turtle库加入了其内部库中。由于是内部库,使用import turtle语句就能引入turtle库,绘图主要有以下几个步骤:设置画板、设置画笔、控制海龟移动绘制图形、色彩填充等。

outside_default.png

常用函数

1、画布设置

  • screensize(canvwidth,canvheight,bg):设置画布大小和背景色

2、画笔控制函数

  • penup():抬起画笔;

  • pendown():落下画笔;

  • pensize(width):画笔宽度;

  • speed(speed):画笔速度;
  • pencolor(color):画笔颜色;color为颜色字符串或者rgb值;

  • goto(x,y):将画笔移动到坐标为x,y的位置;

  • fillcolor(colorstring):绘制图形的填充颜色;

  • begin_fill():准备开始填充图形;

  • end_fill():填充完成;

3、运动控制函数

  • forward(d)/fd(d):直行d个像素;

  • circle(r, extent = None):绘制半径为r,角度为extent的弧形,圆心默认在海龟左侧距离r的位置;

4、方向控制函数

  • setheading(angle)/seth(angle):改变前进方向;

  • left(angle):海龟左转;

  • right(angle):海龟右转;

outside_default.png

哆啦A梦绘画

    接下来我们画一个哆啦A梦来回顾一下我们学习的内容

from turtle import *




# 无轨迹跳跃
def my_goto(x, y):
    penup()
    goto(x, y)
    pendown()


# 眼睛
def eyes():
    fillcolor("#ffffff")
    begin_fill()


    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)
    end_fill()




# 胡须
def beard():
    my_goto(-32, 135)
    seth(165)
    fd(60)


    my_goto(-32, 125)
    seth(180)
    fd(60)


    my_goto(-32, 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)
    seth(315)
    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)
    lt(45)
    fillcolor('#ffffff')
    begin_fill()
    circle(120, 100)
    seth(180)
    # print(pos())
    fd(121)
    pendown()
    seth(215)
    circle(120, 100)
    end_fill()
    my_goto(63.56,218.24)
    seth(90)
    eyes()
    seth(180)
    penup()
    fd(60)
    pendown()
    seth(90)
    eyes()
    penup()
    seth(180)
    fd(64)




# 头型
def head():
    penup()
    circle(150, 40)
    pendown()
    fillcolor('#00a0de')
    begin_fill()
    circle(150, 280)
    end_fill()




# 身体
def body():
    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)
    seth(180)
    fd(70)
    seth(90)
    circle(30, 180)
    seth(180)
    fd(70)
    seth(100)
    circle(-1000, 9)
    seth(-86)
    circle(1000, 2)
    seth(230)
    fd(40)
    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()




# 左手
def left_hand():
    seth(70)
    fillcolor('#ffffff')
    begin_fill()
    circle(-30)
    end_fill()




# 脚
def foot():
    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, 180)
    fd(10)
    end_fill()




# 右手
def right_hand():
    my_goto(-133.97, -91.81)
    seth(50)
    fillcolor('#ffffff')
    begin_fill()
    circle(30)
    end_fill()




# 口袋
def pocket():
    my_goto(-103.42, 15.09)
    seth(0)
    fd(38)
    seth(230)
    begin_fill()
    circle(90, 260)
    end_fill()
    my_goto(5, -40)
    seth(0)
    fd(70)
    seth(-90)
    circle(-70, 180)
    seth(0)
    fd(70)




# 铃铛
def bell():
    my_goto(-103.42, 15.09)
    fd(90)
    seth(70)
    fillcolor('#ffd200')
    begin_fill()
    circle(-20)
    end_fill()
    seth(170)
    fillcolor('#ffd200')
    begin_fill()
    circle(-2, 180)
    seth(10)
    circle(-100, 22)
    circle(-2, 180)
    seth(180 - 10)
    circle(100, 22)
    end_fill()
    goto(-13.42, 15.09)
    seth(250)
    circle(20, 110)
    seth(90)
    fd(15)
    dot(10)
    my_goto(0, -150)




# 画哆啦A梦
def Doraemon():
    head()    # 头部
    scarf()    # 围脖
    face()    # 脸
    nose()    # 红鼻子
    mouth()    # 嘴巴
    beard()    # 胡须
    body()    # 身体
    left_hand()    # 左手
    foot()    # 脚
    right_hand()    # 右手
    pocket()    # 口袋
    bell()    # 铃铛
    black_eyes()    # 画眼睛




if __name__ == '__main__':
    screensize(1500, 1500, "#ffffff")
    setup(0.9, 0.9)
    pensize(3)  # 画笔宽度
    speed(9)    # 画笔速度
    Doraemon()
    my_goto(100, -300)
    write('六一儿童节快乐', font=("Bradley Hand ITC", 30, "bold"))
    mainloop()

outside_default.png

程序执行过程

    我们完成运行程序,整个绘制过程如下所示

1cfe1b8e5abf199f42f13d472ae3628f.gif

outside_default.png

源码和可执行文件获取

    今天的内容比较简单,但是还是建议大家自己动手写一写,只有自己动手写了,才明白自己有哪些地方不清楚。

    有需要源码和可执行程序的,老规矩,关注微信公众号“菜鸟小白的学习分享”回复“六一儿童节”即可。

    最后,祝大家永远保持一颗充满童真童趣的心,六一儿童节快乐~

    58835bdc5024f8b1705515e3c461bb81.jpeg

往期推荐

python实现一个表白神器,520还怕一个人过么

文件和文件夹操作,学会这八个方法就够了,必须收藏备用

这个母亲节的礼物,我为你们准备好了!(内含福利)

cf77ef153d0a7b42c2a69467c37bf0fa.gif

关注菜鸟小白的学习分享 更多精彩等你发现!

一个人学习——孤单

一群人学习——幸福

喜欢我就点亮小花吧5ae8bb63489fc86fc918c1d88d4f8514.gif

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟小白的学习分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值