下面这段代码使用了Python的turtle模块来绘制一个类似于樱花的图案。具体来说,它定义了两个函数:Tree和Petal,并使用这两个函数来绘制图案。
Tree函数:
这个函数递归地绘制了樱花的躯干。它接受两个参数:branch(表示当前的树干或树枝的长度)和t(一个turtle对象,用于绘图)。
在函数内部,首先检查branch的长度,并根据其长度决定树干的颜色、粗细和绘制方式。
然后,函数向前移动一段距离(等于branch的长度),并随机地向右转或左转一定的角度。
接着,函数递归地调用自身两次,绘制两个较小的树枝。
最后,函数抬起笔头,向后移动一段距离,然后放下笔头,准备下一次的绘制。
Petal函数:
这个函数绘制了从树上飘落的花瓣。它接受两个参数:m(表示要绘制的花瓣数量)和t(一个turtle对象,用于绘图)。
在函数内部,它循环m次,每次绘制一个花瓣。每个花瓣都是通过抬起笔头、向前移动一段距离、向左转90度、向前移动一段距离、放下笔头、绘制一个圆形、然后抬起笔头、向后移动并右转90度来完成的。
花瓣的颜色被设置为淡珊瑚色。
主程序部分:
首先,创建了一个turtle对象t和一个turtle屏幕对象w。
然后,隐藏了画笔,并设置了绘图区域的更新频率和初始方向。
接着,使用Tree函数绘制了樱花的躯干,并使用Petal函数绘制了从树上飘落的花瓣。
总体来说,这段代码通过递归和随机性生成了一个类似于樱花的图案,其中树干和树枝的绘制考虑了长度、颜色和粗细的变化,而花瓣则通过随机的位置和角度来模拟飘落的效果。
示例代码:
import turtle as T
import random
import time
画樱花的躯干
def Tree(branch, t):
time.sleep(0.0005)
if branch > 3:
if 8 <= branch <= 12:
if random.randint(0, 2) == 0:
# 白色
t.color('snow')
else:
# 淡珊瑚色
t.color('lightcoral')
t.pensize(branch / 3)
elif branch < 8:
if random.randint(0, 1) == 0:
t.color('snow')
else:
t.color('lightcoral')
t.pensize(branch / 2)
else:
# 赭色
t.color('sienna')
t.pensize(branch / 10)
t.forward(branch)
a = 1.5 * random.random()
t.right(20 * a)
b = 1.5 * random.random()
Tree(branch - 10 * b, t)
t.left(40 * a)
Tree(branch - 10 * b, t)
t.right(20 * a)
t.up()
t.backward(branch)
t.down()
掉落的花瓣
def Petal(m, t):
for i in range(m):
a = 200 - 400 * random.random()
b = 10 - 20 * random.random()
t.up()
t.forward(b)
t.left(90)
t.forward(a)
t.down()
t.color('lightcoral')
t.circle(1)
t.up()
t.backward(a)
t.right(90)
t.backward(b)
# 绘图区域
t = T.Turtle()
画布大小
w = T.Screen()
隐藏画笔
t.hideturtle()
t.getscreen().tracer(5, 0)
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')
画樱花的躯干
Tree(60, t)
掉落的花瓣
Petal(200, t)