用Python绘制动态樱花树(附完整源码)程序员专属的春日浪漫!

一、效果预览(美到窒息!)

运行代码后会出现这样的场景↓↓↓

  • 粉色樱花树在黑色背景中缓缓生长(像看延时摄影!)
  • 树枝末端不断飘落花瓣雨(3D粒子效果绝了)
  • 树干会有自然的分叉和弯曲(完全随机生成)
  • ESC键可随时暂停/继续动画(截图党福音)

(偷偷说:这个程序拿来当屏保都不过分!)

二、必备武器库

只需Python自带库↓↓↓

import turtle  # 绘图界扛把子
import random  # 制造随机美感
import time    # 控制动画节奏

三、核心代码拆解(手把手教学)

3.1 树枝绘制神器(递归大法好!)

def draw_tree(branch_len, t):
    if branch_len > 5:
        # 随机抖动角度(让树更自然)
        angle = 15 * random.random()  
        # 树枝变细逻辑(等比缩小)
        t.pensize(branch_len/10)  
        t.forward(branch_len)
        t.right(angle)
        draw_tree(branch_len * 0.7, t)  # 右侧分支
        t.left(2*angle)
        draw_tree(branch_len * 0.7, t)  # 左侧分支
        t.right(angle)
        t.backward(branch_len)

(关键技巧:递归终止条件别忘写!否则无限循环警告⚠️)

3.2 花瓣粒子系统(动态效果核心)

class Petal:
    def __init__(self):
        self.x = 0  # 初始位置
        self.y = 0  
        self.vx = 0.02 - random.random()*0.04  # X速度
        self.vy = random.random()*0.2 + 0.2     # Y速度
        self.age = 0  # 花瓣"寿命"

    def update(self):
        self.x += self.vx
        self.y -= self.vy
        self.vy -= 0.001  # 重力加速度
        self.age += 1

(参数调优指南:把vy调大能看到龙卷风效果🌀)

四、完整源代码(复制即用)

import turtle
import random
import time

# 初始化画布
t = turtle.Turtle()
screen = turtle.Screen()
screen.bgcolor("black")
t.hideturtle()
t.speed(0)
t.left(90)
t.up()
t.goto(0, -200)
t.down()

# 绘制树干
def draw_tree(branch_len, t):
    if branch_len > 5:
        angle = 15 * random.random()
        t.pensize(branch_len/10)
        t.forward(branch_len)
        t.right(angle)
        draw_tree(branch_len * 0.7, t)
        t.left(2*angle)
        draw_tree(branch_len * 0.7, t)
        t.right(angle)
        t.backward(branch_len)

# 花瓣类
petals = []
class Petal:
    def __init__(self):
        self.x = t.xcor()
        self.y = t.ycor()
        self.vx = 0.02 - random.random()*0.04
        self.vy = random.random()*0.2 + 0.2
        self.age = 0

    def update(self):
        self.x += self.vx
        self.y -= self.vy
        self.vy -= 0.001
        self.age += 1

# 主循环
draw_tree(100, t)
t.up()
t.goto(0, 200)

while True:
    # 生成新花瓣
    if random.random() < 0.3:
        petals.append(Petal())
    
    # 更新花瓣位置
    for p in petals[:]:
        p.update()
        if p.age > 200:
            petals.remove(p)
    
    # 重绘画布
    t.clear()
    for p in petals:
        t.goto(p.x, p.y)
        t.dot(3, "#FFB3E6")
    
    time.sleep(0.05)

screen.listen()
screen.mainloop()

(运行报错急救包:确保turtle版本最新!)

五、魔改小课堂(放飞你的创意)

  1. 下雪模式❄️:把花瓣颜色改成白色,调整vy参数
  2. 荧光特效💡:添加t.pencolor("#00FF00")
  3. 一键截图📸:添加screen.getcanvas().postscript(file="sakura.eps")
  4. 音乐加持🎵:结合pygame库添加背景音乐

(高阶挑战:试试让樱花树随风摆动!)

六、常见问题QA

Q:为什么花瓣不移动?
A:检查update()方法是否被循环调用

Q:树干太直不自然?
A:调整angle的随机系数,加到20试试

Q:如何改变樱花颜色?
A:修改t.dot()的第二个参数,支持HEX颜色码

(终极技巧:用colormode(255)可以玩RGB渐变!)

这个项目不仅适合Python学习者练手,还能作为创意礼物送给程序媛/猿朋友!赶紧动手试试,在终端里种出属于你的樱花树吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值