python turtle库画圣诞树详细代码教程

作者:蓝鲸鱼BlueWhale 时间:2022-09-20 10:29:33 

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

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(0, 150)
       showturtle()
       pendown()
       shape(name="classic")
       seth(-120)
       for i in range(10):
           fd(12)
           right(2)
       penup()
       goto(0, 150)
       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(-55, 34)
       pendown()
       seth(-120)
       for i in range(10):
           fd(8)
           right(5)

penup()
       goto(50, 35)
       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(-20, 90)

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, -150, 160)
       right_up(100, -150, 160)
       right_down(110, -110, 50)
       right_up(160, -140, 150)
       clockwise(80, -120, 180)
       right_up(70, -85, 165)
       right_up(-40, -85, 165)
       right_down(90, -50, 50)
       right_up(130, -80, 150)
       pencolor("pink")
       clockwise(-40, -60, 180)
       pencolor('#de8891')
       clockwise(80, -30, 180)
       pencolor("pink")
       clockwise(40, 10, 180)
       pencolor("#de8891")
       right_up(-60, 30, 120)
       right_up(-20, -20, 150)
       right_down(45, 40, 60)
       right_up(-30, 40, 170)
       right_up(-30, 110, 115)
       right_down(40, 90, 60)
       right_up(80, 50, 160)
       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(35, 145, 100)
       pink_anticlockwise(-7, 145, 110)
       pencolor("red")
       pensize(7)
       penup()
       goto(-35, 135)
       pendown()
       seth(-20)
       pensize(2)
       penup()
       goto(-30, -120)
       pencolor("black")
       pendown()
       fillcolor("red")
       fd(30)
       circle(4, 180)
       fd(30)
       circle(4, 180)
       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(-20, 80)
       pencolor("black")
       pendown()
       fillcolor("red")
       fd(25)
       circle(4, 180)
       fd(25)
       circle(4, 180)
       penup()
       goto(-15, 80)
       pendown()
       begin_fill()
       fillcolor("red")
       seth(-120)
       fd(20)
       seth(150)
       fd(5)
       circle(7, 180)
       fd(15)
       circle(5, 90)
       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(0, 150)
       showturtle()
       pendown()
       shape(name="classic")
       seth(-120)
       for i in range(10):
           fd(12)
           right(2)
       penup()
       goto(0, 150)
       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(-55, 34)
       pendown()
       seth(-120)
       for i in range(10):
           fd(8)
           right(5)

penup()
       goto(50, 35)
       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(-20, 90)

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, -150, 160)
       right_up(100, -150, 160)
       right_down(110, -110, 50)
       right_up(160, -140, 150)
       clockwise(80, -120, 180)
       right_up(70, -85, 165)
       right_up(-40, -85, 165)
       right_down(90, -50, 50)
       right_up(130, -80, 150)
       pencolor("Green")
       clockwise(-40, -60, 180)
       pencolor('DarkSeaGreen')
       clockwise(80, -30, 180)
       pencolor("Green")
       clockwise(40, 10, 180)
       pencolor("DarkSeaGreen")
       right_up(-60, 30, 120)
       right_up(-20, -20, 150)
       right_down(45, 40, 60)
       right_up(-30, 40, 170)
       right_up(-30, 110, 115)
       right_down(40, 90, 60)
       right_up(80, 50, 160)
       pencolor("DarkSeaGreen")

class ChristmasTree():
   def __init__(self):
       setup(500, 500, 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, -115, 120)
       red_anticlockwise(-86, -123, 150)
       basebowknot(40, -50)
       red_anticlockwise(52, -45, 130)
       red_anticlockwise(34, -55, 160)
       seth(0)
       unit(-20, -60)
       red_anticlockwise(-4, -60, 100)
       red_anticlockwise(-20, -60, 120)
       basebowknot(-30, 20)
       red_anticlockwise(-15, 25, 130)
       red_anticlockwise(-40, 20, 180)
       unit(30, 70)
       red_anticlockwise(45, 70, 100)
       red_anticlockwise(30, 70, 120)

def big_bowknots(self):
       pencolor("red")
       pensize(5)
       penup()
       seth(0)
       goto(0, 150)
       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(0, 130)
       pencolor("pink")
       pendown()

def christmashats(self):
       seth(0)
       pink_anticlockwise(35, 145, 100)
       pink_anticlockwise(-7, 145, 110)
       pencolor("red")
       pensize(7)
       penup()
       goto(-35, 135)
       pendown()
       seth(-20)
       pensize(2)
       penup()
       goto(-30, -120)
       pencolor("black")
       pendown()
       fillcolor("red")
       fd(30)
       circle(4, 180)
       fd(30)
       circle(4, 180)
       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, -70, 10)
       seth(10)
       star(100, -20, 10)
       seth(-10)
       star(10, 40, 10)
       seth(30)
       star(-80, 60, 10)
       star(100, -150, 10)
       star(-140, -150, 10)
       star(20, 120, 10)

def socks(self):
       seth(-20)
       pensize(2)
       penup()
       goto(-20, 80)
       pencolor("black")
       pendown()
       fillcolor("red")
       fd(25)
       circle(4, 180)
       fd(25)
       circle(4, 180)
       penup()
       goto(-15, 80)
       pendown()
       begin_fill()
       fillcolor("red")
       seth(-120)
       fd(20)
       seth(150)
       fd(5)
       circle(7, 180)
       fd(15)
       circle(5, 90)
       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()

快拿去送给对象作为圣诞节的额外惊喜吧~这是属于我们程序员的浪漫。

来源:https://blog.csdn.net/weixin_44579633/article/details/122050290

标签:python,turtle库,圣诞树
0
投稿

猜你喜欢

  • python scrapy框架中Request对象和Response对象的介绍

    2021-04-02 07:29:59
  • python使用pandas抽样训练数据中某个类别实例

    2021-03-02 02:56:14
  • ecshop百度编辑器远程下载无后缀的图片,并且加水印

    2023-08-14 17:31:41
  • Python 发送邮件方法总结

    2022-04-05 21:17:06
  • Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例

    2023-07-07 21:08:18
  • SQL常用数据库操作命令使用方法

    2007-08-22 13:24:00
  • python 爬取百度文库并下载(免费文章限定)

    2022-05-08 16:18:28
  • 详解Python requests模块

    2021-12-31 21:55:12
  • 如何提高ASP的效率?

    2010-06-07 20:52:00
  • SQL Server误区30日谈 第30天 有关备份的30个误区

    2024-01-26 05:52:26
  • Python+NumPy绘制常见曲线的方法详解

    2022-01-11 06:14:43
  • MSSQL安全设置的具体步骤和方法小结

    2012-07-11 15:54:11
  • php用header函数实现301跳转代码实例

    2023-10-08 11:29:59
  • 卷积神经网络如何实现提取特征

    2022-05-10 00:39:24
  • Python使用Requests请求网页方式

    2022-10-08 06:01:09
  • 巧用Javascript的逻辑运算符

    2024-04-16 09:47:42
  • python出现RuntimeError错误问题及解决

    2022-01-01 00:58:08
  • python学生管理系统学习笔记

    2022-06-25 13:55:05
  • asp怎么实现中文字符串按声母检索

    2010-05-16 21:19:00
  • 详解python之多进程和进程池(Processing库)

    2022-07-18 23:23:58
  • asp之家 网络编程 m.aspxhome.com