脚本:python实现樱花树

文章目录

代码

python 复制代码
from turtle import *
from random import *
from math import *
def tree(n, l):
    pd ()  # 下笔
    # 阴影效果
    t = cos ( radians ( heading () + 45 ) ) / 8 + 0.25
    pencolor ( t, t, t )
    pensize ( n / 3 )
    forward ( l )  # 画树枝

    if n > 0:
        b = random () * 15 + 10  # 右分支偏转角度
        c = random () * 15 + 10  # 左分支偏转角度
        d = l * (random () * 0.25 + 0.7)  # 下一个分支的长度
        # 右转一定角度,画右分支
        right ( b )
        tree ( n - 1, d )
        # 左转一定角度,画左分支
        left ( b + c )
        tree ( n - 1, d )
        # 转回来
        right ( c )
    else:
        # 画叶子
        right ( 90 )
        n = cos ( radians ( heading () - 45 ) ) / 4 + 0.5
        ran = random ()
        # 这里相比于原来随机添加了填充的圆圈,让樱花叶子看起来更多一点
        if (ran > 0.7):
            begin_fill ()
            circle ( 3 )
            fillcolor ( 'pink' )
        # 把原来随机生成的叶子换成了统一的粉色
        pencolor ( "pink" )
        circle ( 3 )
        if (ran > 0.7):
            end_fill ()
        left ( 90 )
        # 添加0.3倍的飘落叶子
        if (random () > 0.7):
            pu ()
            # 飘落
            t = heading ()
            an = -40 + random () * 40
            setheading ( an )
            dis = int ( 800 * random () * 0.5 + 400 * random () * 0.3 + 200 * random () * 0.2 )
            forward ( dis )
            setheading ( t )
            # 画叶子
            pd ()
            right ( 90 )
            n = cos ( radians ( heading () - 45 ) ) / 4 + 0.5
            pencolor ( n * 0.5 + 0.5, 0.4 + n * 0.4, 0.4 + n * 0.4 )
            circle ( 2 )
            left ( 90 )
            pu ()
            # 返回
            t = heading ()
            setheading ( an )
            backward ( dis )
            setheading ( t )
    pu ()
    backward ( l )  # 退回


bgcolor ( 0.956, 0.9255, 0.9882 )  # 设置背景色(把灰色换成淡紫色)
ht ()  # 隐藏turtle
speed ( 0 )  # 速度 1-10渐进,0 最快
tracer ( 0, 0 )
pu ()  # 抬笔
backward ( 50 )
left ( 90 )  # 左转90度
pu ()  # 抬笔
backward ( 300 )  # 后退300
tree ( 12, 100 )  # 递归7层
done ()

效果

相关推荐
学测绘的小杨5 小时前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz31012 小时前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐12 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱1 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot1 天前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海1 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱1 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽2 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码2 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱2 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理