🌸 用Python画一棵会随风飘落的樱花树
春天到了,是不是想在代码里也留住春天的浪漫?今天我们用Python自带的turtle库,仅需30行代码就能画出一棵动态的樱花树,还会随机飘落花瓣哦~
📦 无需额外安装依赖
turtle是Python标准库自带的绘图工具,不需要额外安装,打开编辑器就能写。
💻 完整代码
import turtle
import random
# 递归绘制树枝
def draw_branch(branch_length):
if branch_length > 3:
# 随机角度和长度,模拟自然生长
angle = random.randint(15, 30)
reduce = random.randint(2, 5)
# 右侧树枝
turtle.right(angle)
turtle.forward(branch_length - reduce)
draw_branch(branch_length - reduce)
turtle.backward(branch_length - reduce)
# 左侧树枝
turtle.left(angle * 2)
turtle.forward(branch_length - reduce)
draw_branch(branch_length - reduce)
turtle.backward(branch_length - reduce)
turtle.right(angle)
# 末端画花瓣
if branch_length < 12:
turtle.pencolor(random.choice(['#FFB7C5', '#FFC0CB', '#FF69B4', '#FF1493']))
turtle.dot(random.randint(4, 8))
else:
turtle.pencolor('#8B4513')
# 初始化设置
turtle.speed(0)
turtle.bgcolor('#F0F8FF')
turtle.left(90)
turtle.penup()
turtle.backward(250)
turtle.pendown()
turtle.pensize(2)
turtle.pencolor('#8B4513')
# 绘制樱花树
draw_branch(60)
# 随机飘落花瓣
for _ in range(30):
x = random.randint(-300, 300)
y = random.randint(-250, 0)
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
turtle.pencolor(random.choice(['#FFB7C5', '#FFC0CB', '#FF69B4', '#FF1493']))
turtle.dot(random.randint(3, 6))
turtle.hideturtle()
turtle.done()
🔍 代码原理讲解
- 递归逻辑:
draw_branch函数会不断调用自己,每次绘制更短的分支,直到分支长度小于3就停止,完美模拟树木自然分叉的结构。 - 随机效果:每次分叉的角度、缩短的长度、花瓣的颜色和大小都用
random随机生成,所以每次运行画出的树都是独一无二的。 - 飘落花瓣:绘制完树之后,随机在屏幕下方画30个小点点,模拟花瓣飘落的效果。
🎨 运行效果
运行代码后你会看到:
- 地上散落着飘落的花瓣
整个画面超级治愈,还可以自己调整颜色、树枝长度、花瓣数量做出不同风格的效果~
✨ 小作业
试试修改以下参数,做出你自己的专属樱花树:
快动手试试吧!把你画的樱花树分享到评论区呀😉