python递归实现樱花完整代码

这是我最后效果图
在这里插入图片描述

import turtle as t
import random

from copy import deepcopy

brance = 65
BRANCE = 65


def draw_tree(brance):  # 画树枝部分  分支量
    if brance > 4:  # 设置一个最小分支量 可以自己改
        if 8 <= brance <= 16:  # 分支量在这个范围内,画笔大小缩小四倍,画中等细小的树枝
            t.pencolor("lightcoral")  # 珊瑚色
            # t.pencolor("green")
            t.pensize(brance / 4)
        elif brance < 8:  # 分支量在这个范围内,画笔大小缩小二倍 , 画细小的树枝
            t.pencolor("lightcoral")  # 珊瑚色
            # t.pencolor("green")
            t.pensize(brance / 2)
        else:  # 其他范围内,我们让程序画树干部分
            t.pencolor("Tan")  # 褐色
            t.pensize(brance / 10)  # 缩小支柱

        t.fd(brance)  # 最开始的树干部分
        a = 1.5 * random.random()  # 随机度数因子

        t.right(20 * a)  # 右转随机角度

        b = 1.5 * random.random()  # 随机长度因子
        draw_tree(brance - 10 * b)  # 往右画,直到画不动为止,然后左转随机度数

        t.left(40 * a)  # 左转随机角度
        draw_tree(brance - 10 * b)  # 往左画,直到画不动位置,然后右转随机度数

        t.right(20 * a)  # 右转一定角度

        t.penup()
        t.backward(brance)  # 递归结束回到上一个节点
        t.pendown()


def draw_fallenflower(brance):
    for i in range(150):  # 循环150次 绘制 掉落的花瓣
        a = 250 - 500 * random.random()  # 花瓣整体长度,有正有负就可以让海龟往二个方向走
        b = 10 - 20 * random.random()  # 花瓣整体宽度,正负道理一致,数值可以根据实际输入

        t.penup()  # 抬笔向前随机走b个宽度,左转90,随机走a个长度,落笔,跟我画一个小圈圈
        t.fd(b)
        t.left(90)
        t.fd(a)
        t.pendown()

        t.pencolor("lightcoral")  # 珊瑚色
        # t.pencolor("green")
        t.circle(1)

        t.penup()  # 跟我左边抬个笔,后退个a的长度,右边转个90,后退个b的宽度,这样可以
        t.backward(a)  # 让海龟回到和刚出发位置差不多的水平线上,所以上面的b设置最好小一点
        t.right(90)
        t.backward(b)


def main():
    t.bgpic(r'F:\PycharmWorkPlace\Try\1.gif')

    t.screensize(500, 500, "pink")
    t.speed(0)
    t.penup()
    t.backward(4 * BRANCE)
    t.right(90)
    t.fd(3*BRANCE)
    t.pendown()
    t.left(180)

    draw_tree(brance)

    draw_fallenflower(brance)

    t.done()


main()

主要代码来自三月桃花开,用python给你带来你的桃花运,详细解析画一棵表白树!的分享,这篇博主写得很好,但是没有把完整过程展示。
背景图:在这里插入图片描述

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广大菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值