用Python画出会动的樱花树(附完整源代码)
(准备好被惊艳了吗?)今天咱们不写枯燥的算法,来玩点浪漫的!用Python的turtle库实现动态飘落的樱花树效果,包教包会,零基础也能玩转~
先睹为快!最终效果

开发环境准备
- Python 3.6+(建议用最新版)
- 安装turtle库(通常内置不用装)
- 一颗想画画的❤️(最重要!!!)
完整源代码(建议先收藏)
```python
import turtle as t
import random
画树枝的魔法参数(调试时可改这些值)
BRANCH_LENGTH = 100 # 初始树枝长度
ANGLE = 20 # 树枝分叉角度
SHRINK = 0.8 # 树枝变短系数
def draw_tree(length, level):
if level > 5:
return
def falling_flower():
# 随机生成花瓣飘落动画
petal = t.Turtle()
petal.hideturtle()
petal.speed(0)
petal.penup()
x = random.randint(-300, 300)
y = random.randint(200, 400)
petal.goto(x, y)
petal.color('#FFB6C1')
初始化画布
t.setup(800,600)
t.bgcolor('black')
t.left(90)
t.speed(0)
t.penup()
t.goto(0, -250)
t.pendown()
t.color('#8B4513')
主程序
draw_tree(BRANCH_LENGTH, 1)
持续飘落花瓣(按ESC退出)
while True:
falling_flower()
t.update()
if t.onkeypress(lambda: exit(), 'Escape'):
break
t.done()
```
代码逐段解析(重点部分)
树枝绘制核心逻辑
python
def draw_tree(length, level):
if level > 5:
return
#...递归代码...
这里使用了递归算法(像树枝分叉一样不断自我调用):
1. 每层树枝长度减少20%(SHRINK=0.8)
2. 递归深度控制为5层(防止堆栈溢出)
3. 树枝粗细随层级变化(pensize(level*1.5))
花瓣飘落动画
python
def falling_flower():
#...随机运动代码...
这段代码的三大亮点:
1. 随机起始位置(random.randint)
2. 拟真运动轨迹(随机左右偏移+匀速下落)
3. 自动回收机制(当y<-300时清除花瓣)
主程序流程
```python
初始化->画树->循环花瓣
t.setup(800,600)
draw_tree(...)
while True:...
``
注意这个无限循环要配合t.update()`使用,否则画面会卡死!
常见问题调试指南
Q1:运行后窗口闪退
✅ 解决方案:在代码末尾加t.done()或t.mainloop()
Q2:花瓣太密集/太稀疏
✅ 调整方案:在falling_flower()调用前加time.sleep(0.1)
Q3:想改变樱花颜色
✅ 颜色代码表:
- 浅粉色 #FFB6C1
- 深粉色 #FF69B4
- 白色 #FFFFFF
创意扩展玩法
(动手试试这些修改!)
1. 给树干加上纹理:在draw_tree里添加随机凹凸
2. 实现昼夜切换:用t.bgcolor()改变背景色
3. 添加互动功能:点击鼠标撒花瓣
技术原理深挖
这个项目融合了三个编程精髓:
1. 递归算法:用自我调用的方式生成分形树
2. 面向对象:每个花瓣都是独立的Turtle对象
3. 动画原理:通过连续帧生成运动错觉
(没想到吧?看似简单的动画藏着这么多学问!)
最后说两句
这个项目特别适合用来:
- 表白神器(把TA名字写在树上)
- 教学演示(递归算法可视化)
- 动态壁纸(配合PyInstaller打包成exe)
赶紧跑起代码,看看你电脑里开出的樱花吧!遇到问题欢迎评论区交流~(比心)

浙公网安备 33010602011771号