温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用python turtle库画圣诞树

发布时间:2021-12-21 15:09:23 阅读:474 作者:iii 栏目:开发技术
Python开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇内容主要讲解“怎么用python turtle库画圣诞树”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用python turtle库画圣诞树”吧!

首先我们的目标是这样子的:

怎么用python turtle库画圣诞树

那么他有什么成分呢?有圣诞树的本体、大小蝴蝶结、星星、圣诞帽和袜子。

首先我们来画圣诞树的本体。

1. 圣诞树的本体

圣诞树本体是这样子的:

怎么用python turtle库画圣诞树

代码:

class TreeBackBone():
    def __init__(self):
        pencolor("pink")
        pensize(10)
        self.layer1()
        self.layer2()
        self.layer3()
        self.layer4()
        self.trunk()

    def layer1(self):
        penup()
        hideturtle()
        goto(0150)
        showturtle()
        pendown()
        shape(name="classic")
        seth(-120)
        for i in range(10):
            fd(12)
            right(2)
        penup()
        goto(0150)
        seth(-60)
        pendown()
        for i in range(10):
            fd(12)
            left(2)
        seth(-150)
        penup()
        fd(10)
        pendown()
        for i in range(5):
            fd(10)
            right(15)
        seth(-150)
        penup()
        fd(8)
        pendown()
        for i in range(5):
            fd(10)
            right(15)
        seth(-155)
        penup()
        fd(5)
        pendown()
        for i in range(5):
            fd(7)
            right(15)

    def layer2(self):
        penup()
        goto(-5534)
        pendown()
        seth(-120)
        for i in range(10):
            fd(8)
            right(5)

        penup()
        goto(5035)
        seth(-60)
        pendown()
        for i in range(10):
            fd(8)
            left(5)
        seth(-120)
        penup()
        fd(10)
        seth(-145)
        pendown()
        for i in range(5):
            fd(10)
            right(15)
        penup()
        fd(10)
        seth(-145)
        pendown()
        for i in range(5):
            fd(12)
            right(15)
        penup()
        fd(8)
        seth(-145)
        pendown()
        for i in range(5):
            fd(10)
            right(15)
        penup()
        seth(-155)
        fd(8)
        pendown()
        for i in range(5):
            fd(11)
            right(15)

    def layer3(self):
        penup()
        goto(-100, -40)
        seth(-120)
        pendown()
        for i in range(10):
            fd(6)
            right(3)
        penup()
        goto(80, -39)
        seth(-50)
        pendown()
        for i in range(10):
            fd(6)
            left(3)
        seth(-155)
        penup()
        fd(10)
        pendown()
        for i in range(5):
            fd(8)
            right(10)
        penup()
        fd(8)
        seth(-145)
        pendown()
        for i in range(7):
            fd(8)
            right(10)
        penup()
        fd(8)
        seth(-145)
        pendown()
        for i in range(7):
            fd(7)
            right(10)
        penup()
        fd(8)
        seth(-145)
        pendown()
        for i in range(7):
            fd(7)
            right(10)
        penup()
        fd(8)
        seth(-140)
        pendown()
        for i in range(7):
            fd(6)
            right(10)

    def layer4(self):
        penup()
        goto(-120, -95)
        seth(-130)
        pendown()
        for i in range(7):
            fd(10)
            right(5)
        penup()
        goto(100, -95)
        seth(-50)
        pendown()
        for i in range(7):
            fd(10)
            left(5)
        penup()
        seth(-120)
        fd(10)
        seth(-155)
        pendown()
        for i in range(6):
            fd(8)
            right(10)
        penup()
        seth(-160)
        fd(10)
        seth(-155)
        pendown()
        for i in range(6):
            fd(8)
            right(10)
        penup()
        seth(-160)
        fd(10)
        seth(-155)
        pendown()
        for i in range(6):
            fd(8)
            right(10)
        penup()
        seth(-160)
        fd(10)
        seth(-160)
        pendown()
        for i in range(6):
            fd(8)
            right(10)
        penup()
        seth(-160)
        fd(10)
        seth(-160)
        pendown()
        for i in range(6):
            fd(8)
            right(10)
        penup()
        seth(-160)
        fd(10)
        seth(-165)
        pendown()
        for i in range(5):
            fd(10)
            right(11)

    def trunk(self):
        penup()
        goto(-70, -165)
        seth(-85)
        pendown()
        for i in range(3):
            fd(5)
            left(3)
        penup()
        goto(70, -165)
        seth(-95)
        pendown()
        for i in range(3):
            fd(5)
            right(3)
        seth(-170)
        penup()
        fd(10)
        pendown()
        pendown()
        for i in range(10):
            fd(12)
            right(2)
        penup()
        goto(70, -165)
        pendown()
        seth(-90)
        pensize(8)
        pencolor("#de8891")
        circle(-2090)

        penup()
        goto(30, -185)
        pendown()
        seth(-180)
        pensize(8)
        pencolor("#de8891")
        fd(40)

        penup()
        goto(-5, -170)
        pendown()
        seth(-180)
        pensize(8)
        pencolor("#de8891")
        fd(35)

        right_up(-70, -150160)
        right_up(100, -150160)
        right_down(110, -11050)
        right_up(160, -140150)
        clockwise(80, -120180)
        right_up(70, -85165)
        right_up(-40, -85165)
        right_down(90, -5050)
        right_up(130, -80150)
        pencolor("pink")
        clockwise(-40, -60180)
        pencolor('#de8891')
        clockwise(80, -30180)
        pencolor("pink")
        clockwise(4010180)
        pencolor("#de8891")
        right_up(-6030120)
        right_up(-20, -20150)
        right_down(454060)
        right_up(-3040170)
        right_up(-30110115)
        right_down(409060)
        right_up(8050160)
        pencolor("#de8891")

2. 蝴蝶结

接下来让我们绘制作为装饰的小蝴蝶结,每个蝴蝶结长这个亚子~

怎么用python turtle库画圣诞树

代码:

def basebowknot(x, y):
    penup()
    goto(x, y)
    seth(80)
    pendown()
    pensize(2)
    circle(5)
    seth(10)
    fd(15)
    seth(120)
    fd(20)
    seth(240)
    fd(20)
    seth(180)
    fd(20)
    seth(-60)
    fd(20)
    seth(50)
    fd(20)
    seth(-40)
    fd(30)
    seth(-130)
    fd(5)
    seth(135)
    fd(30)
    seth(-60)
    fd(30)
    seth(-150)
    fd(6)
    seth(110)
    fd(30)

3. 星星

接下来我们绘制闪闪发光的小星星,长这个亚子~

怎么用python turtle库画圣诞树

代码:

def star(x, y, size):
    pensize(2)
    pencolor("black")
    penup()
    goto(x, y)
    pendown()
    begin_fill()
    fillcolor("yellow")
    for i in range(5):
        left(72)
        fd(size)
        right(144)
        fd(size)
    end_fill()

4. 圣诞帽

接下来我们绘制灰常具有节日气息的圣诞帽,长这个亚子~

怎么用python turtle库画圣诞树

代码:

def christmashats(self):
        seth(0)
        pink_anticlockwise(35145100)
        pink_anticlockwise(-7145110)
        pencolor("red")
        pensize(7)
        penup()
        goto(-35135)
        pendown()
        seth(-20)
        pensize(2)
        penup()
        goto(-30, -120)
        pencolor("black")
        pendown()
        fillcolor("red")
        fd(30)
        circle(4180)
        fd(30)
        circle(4180)
        penup()
        goto(-25, -115)
        seth(75)
        pendown()
        begin_fill()
        for i in range(5):
            fd(6)
            right(20)
        seth(-10)
        for i in range(5):
            fd(8)
            right(15)
        seth(145)
        for i in range(5):
            fd(5)
            left(2)
        seth(90)
        for i in range(5):
            fd(1)
            left(2)
        seth(-90)
        for i in range(4):
            fd(4)
            right(6)
        seth(161)
        fd(30)
        end_fill()
        pensize(1)
        pencolor("black")

5. 圣诞袜

最后是用来装圣诞老人礼物的圣诞袜哟~

怎么用python turtle库画圣诞树

代码:

def socks(self):
        seth(-20)
        pensize(2)
        penup()
        goto(-2080)
        pencolor("black")
        pendown()
        fillcolor("red")
        fd(25)
        circle(4180)
        fd(25)
        circle(4180)
        penup()
        goto(-1580)
        pendown()
        begin_fill()
        fillcolor("red")
        seth(-120)
        fd(20)
        seth(150)
        fd(5)
        circle(7180)
        fd(15)
        circle(590)
        fd(30)
        seth(160)
        fd(18)
        end_fill()

至此,我们的圣诞树就全部画完啦!

6. 最后奉上完整代码

from turtle import *
import time

class TreeBackBone():
    def __init__(self):
        pencolor("Green")
        pensize(10)
        self.layer1()
        self.layer2()
        self.layer3()
        self.layer4()
        self.trunk()

    def layer1(self):
        penup()
        hideturtle()
        goto(0150)
        showturtle()
        pendown()
        shape(name="classic")
        seth(-120)
        for i in range(10):
            fd(12)
            right(2)
        penup()
        goto(0150)
        seth(-60)
        pendown()
        for i in range(10):
            fd(12)
            left(2)
        seth(-150)
        penup()
        fd(10)
        pendown()
        for i in range(5):
            fd(10)
            right(15)
        seth(-150)
        penup()
        fd(8)
        pendown()
        for i in range(5):
            fd(10)
            right(15)
        seth(-155)
        penup()
        fd(5)
        pendown()
        for i in range(5):
            fd(7)
            right(15)

    def layer2(self):
        penup()
        goto(-5534)
        pendown()
        seth(-120)
        for i in range(10):
            fd(8)
            right(5)

        penup()
        goto(5035)
        seth(-60)
        pendown()
        for i in range(10):
            fd(8)
            left(5)
        seth(-120)
        penup()
        fd(10)
        seth(-145)
        pendown()
        for i in range(5):
            fd(10)
            right(15)
        penup()
        fd(10)
        seth(-145)
        pendown()
        for i in range(5):
            fd(12)
            right(15)
        penup()
        fd(8)
        seth(-145)
        pendown()
        for i in range(5):
            fd(10)
            right(15)
        penup()
        seth(-155)
        fd(8)
        pendown()
        for i in range(5):
            fd(11)
            right(15)

    def layer3(self):
        penup()
        goto(-100, -40)
        seth(-120)
        pendown()
        for i in range(10):
            fd(6)
            right(3)
        penup()
        goto(80, -39)
        seth(-50)
        pendown()
        for i in range(10):
            fd(6)
            left(3)
        seth(-155)
        penup()
        fd(10)
        pendown()
        for i in range(5):
            fd(8)
            right(10)
        penup()
        fd(8)
        seth(-145)
        pendown()
        for i in range(7):
            fd(8)
            right(10)
        penup()
        fd(8)
        seth(-145)
        pendown()
        for i in range(7):
            fd(7)
            right(10)
        penup()
        fd(8)
        seth(-145)
        pendown()
        for i in range(7):
            fd(7)
            right(10)
        penup()
        fd(8)
        seth(-140)
        pendown()
        for i in range(7):
            fd(6)
            right(10)

    def layer4(self):
        penup()
        goto(-120, -95)
        seth(-130)
        pendown()
        for i in range(7):
            fd(10)
            right(5)
        penup()
        goto(100, -95)
        seth(-50)
        pendown()
        for i in range(7):
            fd(10)
            left(5)
        penup()
        seth(-120)
        fd(10)
        seth(-155)
        pendown()
        for i in range(6):
            fd(8)
            right(10)
        penup()
        seth(-160)
        fd(10)
        seth(-155)
        pendown()
        for i in range(6):
            fd(8)
            right(10)
        penup()
        seth(-160)
        fd(10)
        seth(-155)
        pendown()
        for i in range(6):
            fd(8)
            right(10)
        penup()
        seth(-160)
        fd(10)
        seth(-160)
        pendown()
        for i in range(6):
            fd(8)
            right(10)
        penup()
        seth(-160)
        fd(10)
        seth(-160)
        pendown()
        for i in range(6):
            fd(8)
            right(10)
        penup()
        seth(-160)
        fd(10)
        seth(-165)
        pendown()
        for i in range(5):
            fd(10)
            right(11)

    def trunk(self):
        penup()
        goto(-70, -165)
        seth(-85)
        pendown()
        for i in range(3):
            fd(5)
            left(3)
        penup()
        goto(70, -165)
        seth(-95)
        pendown()
        for i in range(3):
            fd(5)
            right(3)
        seth(-170)
        penup()
        fd(10)
        pendown()
        pendown()
        for i in range(10):
            fd(12)
            right(2)
        penup()
        goto(70, -165)
        pendown()
        seth(-90)
        pensize(8)
        pencolor("DarkSeaGreen")
        circle(-2090)

        penup()
        goto(30, -185)
        pendown()
        seth(-180)
        pensize(8)
        pencolor("DarkSeaGreen")
        fd(40)

        penup()
        goto(-5, -170)
        pendown()
        seth(-180)
        pensize(8)
        pencolor("DarkSeaGreen")
        fd(35)

        right_up(-70, -150160)
        right_up(100, -150160)
        right_down(110, -11050)
        right_up(160, -140150)
        clockwise(80, -120180)
        right_up(70, -85165)
        right_up(-40, -85165)
        right_down(90, -5050)
        right_up(130, -80150)
        pencolor("Green")
        clockwise(-40, -60180)
        pencolor('DarkSeaGreen')
        clockwise(80, -30180)
        pencolor("Green")
        clockwise(4010180)
        pencolor("DarkSeaGreen")
        right_up(-6030120)
        right_up(-20, -20150)
        right_down(454060)
        right_up(-3040170)
        right_up(-30110115)
        right_down(409060)
        right_up(8050160)
        pencolor("DarkSeaGreen")


class ChristmasTree():
    def __init__(self):
        setup(500500, startx=None, starty=None)
        speed(0)
        TreeBackBone()
        pencolor("#de8891")
        self.small_bowknots()
        self.big_bowknots()
        self.christmashats()
        self.stars()
        self.socks()
        penup()
        seth(0)
        goto(100, -230)
        pendown()
        write("Merry Christmas ", align="center", font=("Comic Sans MS"24"bold"))
        done()

    def small_bowknots(self):
        seth(0)
        unit(40, -160)
        basebowknot(-80, -120)
        red_anticlockwise(-67, -115120)
        red_anticlockwise(-86, -123150)
        basebowknot(40, -50)
        red_anticlockwise(52, -45130)
        red_anticlockwise(34, -55160)
        seth(0)
        unit(-20, -60)
        red_anticlockwise(-4, -60100)
        red_anticlockwise(-20, -60120)
        basebowknot(-3020)
        red_anticlockwise(-1525130)
        red_anticlockwise(-4020180)
        unit(3070)
        red_anticlockwise(4570100)
        red_anticlockwise(3070120)

    def big_bowknots(self):
        pencolor("red")
        pensize(5)
        penup()
        seth(0)
        goto(0150)
        pendown()
        circle(10)
        seth(-15)
        fd(40)
        seth(90)
        fd(40)
        seth(200)
        fd(40)
        seth(160)
        fd(40)
        seth(-90)
        fd(40)
        seth(15)
        fd(40)
        seth(-70)
        pencolor("red")
        pensize(4)
        fd(40)
        seth(-180)
        fd(10)
        seth(100)
        fd(40)
        seth(-100)
        fd(40)
        seth(-180)
        fd(10)
        seth(70)
        fd(40)
        penup()
        seth(0)
        goto(0130)
        pencolor("pink")
        pendown()

    def christmashats(self):
        seth(0)
        pink_anticlockwise(35145100)
        pink_anticlockwise(-7145110)
        pencolor("red")
        pensize(7)
        penup()
        goto(-35135)
        pendown()
        seth(-20)
        pensize(2)
        penup()
        goto(-30, -120)
        pencolor("black")
        pendown()
        fillcolor("red")
        fd(30)
        circle(4180)
        fd(30)
        circle(4180)
        penup()
        goto(-25, -115)
        seth(75)
        pendown()
        begin_fill()
        for i in range(5):
            fd(6)
            right(20)
        seth(-10)
        for i in range(5):
            fd(8)
            right(15)
        seth(145)
        for i in range(5):
            fd(5)
            left(2)
        seth(90)
        for i in range(5):
            fd(1)
            left(2)
        seth(-90)
        for i in range(4):
            fd(4)
            right(6)
        seth(161)
        fd(30)
        end_fill()
        pensize(1)
        pencolor("black")

    def stars(self):
        seth(-15)
        star(-120, -7010)
        seth(10)
        star(100, -2010)
        seth(-10)
        star(104010)
        seth(30)
        star(-806010)
        star(100, -15010)
        star(-140, -15010)
        star(2012010)

    def socks(self):
        seth(-20)
        pensize(2)
        penup()
        goto(-2080)
        pencolor("black")
        pendown()
        fillcolor("red")
        fd(25)
        circle(4180)
        fd(25)
        circle(4180)
        penup()
        goto(-1580)
        pendown()
        begin_fill()
        fillcolor("red")
        seth(-120)
        fd(20)
        seth(150)
        fd(5)
        circle(7180)
        fd(15)
        circle(590)
        fd(30)
        seth(160)
        fd(18)
        end_fill()


def basebowknot(x, y):
    penup()
    goto(x, y)
    seth(80)
    pendown()
    pensize(2)
    circle(5)
    seth(10)
    fd(15)
    seth(120)
    fd(20)
    seth(240)
    fd(20)
    seth(180)
    fd(20)
    seth(-60)
    fd(20)
    seth(50)
    fd(20)
    seth(-40)
    fd(30)
    seth(-130)
    fd(5)
    seth(135)
    fd(30)
    seth(-60)
    fd(30)
    seth(-150)
    fd(6)
    seth(110)
    fd(30)


def right_up(x, y, z):
    penup()
    goto(x, y)
    seth(-z)
    pendown()
    for angel in range(5):
        fd(10)
        right(10)


def right_down(x, y, z):
    penup()
    goto(x, y)
    seth(-z)
    pendown()
    for angel in range(5):
        fd(10)
        left(10)


def clockwise(x, y, z):
    penup()
    goto(x, y)
    seth(-z)
    pendown()
    for angel in range(5):
        fd(6)
        right(10)
    seth(-150)
    fd(20)


def unit(x, y):
    penup()
    goto(x, y)
    pendown()
    pensize(2)
    circle(5)
    seth(-10)
    fd(15)
    seth(90)
    fd(15)
    seth(200)
    fd(15)
    seth(160)
    fd(15)
    seth(-90)
    fd(15)
    seth(10)
    fd(15)
    seth(-60)
    fd(20)
    seth(-180)
    fd(5)
    seth(110)
    fd(20)
    seth(-90)
    fd(20)
    seth(-180)
    fd(6)
    seth(70)
    fd(15)
    hideturtle()


def red_anticlockwise(x, y, z):
    penup()
    goto(x, y)
    pendown()
    seth(z)
    for po in range(5):
        fd(4)
        left(36)


def pink_anticlockwise(x, y, z):
    penup()
    goto(x, y)
    pencolor("red")
    pendown()
    seth(z)
    for po in range(10):
        fd(4)
        left(18)


def star(x, y, size):
    pensize(2)
    pencolor("black")
    penup()
    goto(x, y)
    pendown()
    begin_fill()
    fillcolor("yellow")
    for i in range(5):
        left(72)
        fd(size)
        right(144)
        fd(size)
    end_fill()


if __name__ == '__main__':
    ChristmasTree()

到此,相信大家对“怎么用python turtle库画圣诞树”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×