赞
踩
一年一度的圣诞节马上就要到了,看到朋友圈好多小伙伴已经开始炫耀自己制作的圣诞树了。今天给大家分享通过Pythoy用Turtle库来画圣诞树。(复制即可使用)
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
本次我将使用python的Turtle库进行绘制各种圣诞树。
import turtle # 创建画布 screen = turtle.Screen() screen.setup(500, 600) # 圆形 circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() # 矩形 square = turtle.Turtle() square.shape('square') square.color('green') square.speed('fastest') square.up() circle.goto(0, 180) circle.stamp() k = 0 for i in range(1, 13): y = 22 * i for j in range(i - k): x = 22 * j square.goto(x, -y + 180) square.stamp() square.goto(-x, -y + 180) square.stamp() if i % 4 == 3: x = 22 * (i - k) circle.color('yellow') circle.goto(-x, -y + 180) circle.stamp() circle.goto(x, -y + 180) circle.stamp() if i % 4 == 0: x = 22 * (i - k) circle.color('red') circle.goto(-x, -y + 180) circle.stamp() circle.goto(x, -y + 180) circle.stamp() # 控制层数 k += 2 # 画树干 square.color('brown') for i in range(13, 17): y = 22 * i for j in range(2): x = 22 * j square.goto(x, -y + 180) square.stamp() square.goto(-x, -y + 180) square.stamp() turtle.mainloop()
import random import turtle n = 80.0 # 创建画布 screen = turtle.Screen() screen.setup(500, 700) t = turtle.Turtle() t.speed("fastest") t.left(90) t.forward(3 * n) t.color("orange", "yellow") t.begin_fill() t.left(126) for i in range(5): t.forward(n / 5) t.right(144) t.forward(n / 5) t.left(72) t.end_fill() t.right(126) t.color("dark green") t.backward(n * 4.8) def tree(d, s): if d <= 0: return t.forward(s) tree(d - 1, s * .8) t.right(120) tree(d - 3, s * .5) t.right(120) tree(d - 3, s * .5) t.right(120) t.backward(s) tree(15, n) t.backward(n / 2) for i in range(200): a = 200 - 400 * random.random() b = 10 - 20 * random.random() t.up() t.forward(b) t.left(90) t.forward(a) t.down() if random.randint(0, 1) == 0: t.color('tomato') else: t.color('wheat') t.circle(2) t.up() t.backward(a) t.right(90) t.backward(b) turtle.mainloop()
import turtle import random as r from turtle import * n = 100.0 t = turtle.Turtle() # 定义速度 t.speed("fastest") # 定义背景颜色 screensize(bg='black') t.left(90) t.forward(3 * n) # 定义最上端星星的颜色,外圈是orange,内部是yellow t.color("orange", "yellow") t.begin_fill() t.left(126) for i in range(5): # 画五角星 t.forward(n / 5) t.right(144) # 五角星的角度 t.forward(n / 5) t.left(72) # 继续换角度 t.end_fill() t.right(126) def drawlight(): # 定义画彩灯的方法 if r.randint(0, 30) == 0: # 如果觉得彩灯太多,可以把取值范围加大一些,对应的灯就会少一些 t.color('tomato') # 定义第一种颜色 t.circle(6) elif r.randint(0, 30) == 1: t.color('orange') # 定义第二种颜色 t.circle(3) else: t.color('dark green') # 其余的随机数情况下画空的树枝 t.color("dark green") # 定义树枝的颜色 t.backward(n * 4.8) def tree(d, s): # 开始画树 if d <= 0: return t.forward(s) tree(d - 1, s * .8) t.right(120) tree(d - 3, s * .5) drawlight() # 同时调用小彩灯的方法 t.right(120) tree(d - 3, s * .5) t.right(120) t.backward(s) tree(15, n) t.backward(n / 2) for i in range(200): # 循环画最底端的小装饰 a = 200 - 400 * r.random() b = 10 - 20 * r.random() t.up() t.forward(b) t.left(90) t.forward(a) t.down() if r.randint(0, 1) == 0: t.color('tomato') else: t.color('wheat') t.circle(2) t.up() t.backward(a) t.right(90) t.backward(b) t.color("dark red", "red") # 定义字体颜色 t.write("Merry Christmas", align="center", font=("Comic Sans MS", 40, "bold")) # 定义文字、位置、字体、大小 def drawsnow(): # 定义画雪花的方法 t.ht() # 隐藏笔头,ht=hideturtle t.pensize(2) # 定义笔头大小 for i in range(200): # 画多少雪花 t.pencolor("white") # 定义画笔颜色为白色,其实就是雪花为白色 t.pu() # 提笔,pu=penup t.setx(r.randint(-350, 350)) # 定义x坐标,随机从-350到350之间选择 t.sety(r.randint(-100, 350)) # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始 t.pd() # 落笔,pd=pendown dens = 6 # 雪花瓣数设为6 snowsize = r.randint(1, 10) # 定义雪花大小 for j in range(dens): # 就是6,那就是画5次,也就是一个雪花五角星 # t.forward(int(snowsize)) #int()取整数 t.fd(int(snowsize)) t.backward(int(snowsize)) # t.bd(int(snowsize)) #注意没有bd=backward,但有fd=forward,小bug t.right(int(360 / dens)) # 转动角度 drawsnow() # 调用画雪花的方法 turtle.mainloop() # 完成,否则会直接关闭
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。