文章目录
一、效果展示先睹为快
运行代码后你会看到这样的场景:
- 深蓝色的夜空背景下
- 一棵开满粉色樱花的树缓缓生长
- 花瓣随机飘落效果(效果超酷!)
- 动态绘制过程清晰可见
(建议先跑代码再看原理讲解,体验更直观)
二、准备你的Python环境
2.1 必需库安装
打开cmd/powershell输入:
pip install turtle
(没错!这个炫酷的效果只需要内置turtle库)
2.2 代码编辑器选择
推荐使用:
- VSCode(记得安装Python插件)
- PyCharm社区版
- 甚至记事本都可以!
三、完整源代码(带详细注释)
import turtle as t
import random
# 初始化画布
t.setup(800, 600) # 窗口尺寸
t.bgcolor('navy') # 背景色
t.title('Python樱花树') # 窗口标题
t.hideturtle() # 隐藏乌龟光标
t.speed(0) # 最快绘制速度
t.pensize(2) # 树枝粗细
# 花瓣容器(后面动画要用)
petals = []
def draw_tree(level, length):
"""递归画树枝"""
if level > 0:
# 画右侧分支
t.right(20)
t.forward(length)
draw_tree(level-1, length*0.8)
# 画左侧分支
t.backward(length)
t.left(40)
t.forward(length)
draw_tree(level-1, length*0.8)
# 回退到父节点
t.backward(length)
t.right(20)
def create_petal():
"""创建单个花瓣"""
p = t.Turtle()
p.penup()
p.shape('circle')
p.shapesize(0.3)
p.color('#FFB6C1') # 浅粉色
p.speed(0)
p.goto(random.randint(-300, 300), 300)
p.dy = random.uniform(0.1, 0.5) # 下落速度
p.dx = random.uniform(-0.2, 0.2) # 横向飘动
return p
def animate_petals():
"""花瓣飘落动画"""
while True:
# 随机添加新花瓣
if random.random() < 0.2:
petals.append(create_petal())
# 更新所有花瓣位置
for p in petals:
p.sety(p.ycor() - p.dy)
p.setx(p.xcor() + p.dx)
# 超出屏幕则重置
if p.ycor() < -300:
p.goto(random.randint(-300, 300), 300)
t.update() # 更新画面
if __name__ == '__main__':
t.tracer(0) # 关闭自动刷新
t.left(90) # 初始方向调整
t.penup()
t.goto(0, -200)
t.pendown()
t.color('sienna') # 树干颜色
# 开始绘制!
draw_tree(8, 100) # 参数控制树的分支复杂度
# 启动花瓣动画
animate_petals()
四、核心代码解析(重点!)
4.1 递归画树原理
def draw_tree(level, length):
if level > 0:
# 向右画分支
t.right(20)
t.forward(length)
draw_tree(level-1, length*0.8)
# 向左画分支
t.backward(length)
t.left(40)
t.forward(length)
draw_tree(level-1, length*0.8)
# 回到原点
t.backward(length)
t.right(20)
(递归层级示意图)
level=3时的绘制路径:
- 主树干 → 右分支 → 右右分支 → 回退
- → 左分支 → 左右分支 → 回退
- 依次类推…
4.2 花瓣动画技巧
def animate_petals():
while True:
# 随机生成新花瓣
if random.random() < 0.2:
petals.append(create_petal())
# 更新位置
for p in petals:
p.sety(p.ycor() - p.dy) # y轴下落
p.setx(p.xcor() + p.dx) # x轴飘动
(关键点解析)
random.random()<0.2
控制花瓣生成频率dy
控制下落速度,dx
控制左右飘动幅度- 无限循环实现持续动画
五、个性化定制指南(必看!)
5.1 修改树的外观
参数位置 | 可调整值 | 效果说明 |
---|---|---|
draw_tree(8, 100) | 第一个参数调为5-10 | 树枝复杂度(小心卡顿!) |
t.color(‘sienna’) | ‘peru’,‘#654321’ | 树干颜色 |
t.pensize(2) | 1-5 | 树枝粗细 |
5.2 调整花瓣效果
# 修改这两个参数:
p.shapesize(0.3) # 花瓣大小
p.color('#FFB6C1') # 颜色代码
# 飘动参数调整:
p.dy = random.uniform(0.1, 0.5) # 下落速度
p.dx = random.uniform(-0.2, 0.2) # 横向飘动
(颜色推荐)
- 樱花粉:#FFB6C1
- 桃花粉:#FF69B4
- 梅花红:#DC143C
六、常见问题解决
6.1 窗口闪退怎么办?
在代码最后加:
t.done() # 保持窗口打开
6.2 动画卡顿怎么处理?
尝试:
- 降低递归层级(把draw_tree的8改为6)
- 减少同时存在的花瓣数量(修改random.random()<0.2中的0.2为更小值)
6.3 想保存为GIF?
安装额外库:
pip install pillow
然后在代码开头添加:
from PIL import ImageGrab
七、创意扩展建议
发挥你的想象力:
- 在树下添加秋千(用turtle画矩形和圆)
- 增加星空背景(随机画白色小点)
- 让花瓣点击变色(绑定鼠标事件)
- 添加背景音乐(需要pygame库支持)
(动手试试看!遇到问题欢迎评论区交流~)
本文代码在Windows11+Python3.9环境下测试通过,如遇运行问题请检查缩进和标点符号。创作不易,如果对你有帮助,欢迎分享给更多朋友!