猫史档案馆


【Python作品分享】分形樱花树

用户:岚心~岚心~查看:0 回复:0 评论:0 创建时间:2022-06-18T22:26:44


【作品展示】

center_image

 

【作品介绍】

bvnfgfdf

 

【作品源代码】

import random
import turtle

__Pen = turtle.Pen()


# 分形樱花树

# “画树”函数
# 参数分别是树枝长度、画笔

def tree(branchLen, t):

    if (branchLen > 3):
        if (8 <= branchLen and branchLen <= 12):
            if (random.randint(0, 2) == 0):
                t.pencolor('snow')
            else:
                t.pencolor('lightcoral')
            t.pensize((branchLen / 3))
        elif (branchLen < 8):
            if (random.randint(0, 1) == 0):
                t.pencolor('snow')
            else:
                t.pencolor('lightcoral')
            t.pensize((branchLen / 2))
        else:
            t.pencolor('sienna')
            t.pensize((branchLen / 10))
        t.forward(branchLen)
        a = (1.5 * (random.random()))
        t.right((20 * a))
        b = (1.5 * (random.random()))
        # 在tree函数内部调自己,这种方式叫递归调用
        # 递归可以大幅提升编程效率
        tree(branchLen - 10 * b, t)
        t.left((40 * a))
        tree(branchLen - 10 * b, t)
        t.right((20 * a))
        t.penup()
        t.backward(branchLen)
        t.pendown()

# 绘制树下花瓣,参数分别是画板数、画笔

def petal(m, t):

    for i in range(m):
        a = (200 - 400 * (random.random()))
        b = (10 - 20 * (random.random()))
        t.penup()
        t.forward(b)
        t.left(90)
        t.forward(a)
        t.pendown()
        t.pencolor('lightcoral')
        t.circle(1)
        t.penup()
        t.backward(a)
        t.right(90)
        t.backward(b)

def main():

    t = turtle.Pen()
    __Pen.hideturtle()
    t.speed(0)
    turtle.bgcolor('wheat')
    t.left(90)
    t.penup()
    t.backward(150)
    t.pendown()
    t.pencolor('sienna')
    tree(60, t)
    petal(100, t)
    turtle.done()

main()

# 分形雪花
t = turtle.Pen()

def snow(size, n):

    if (n == 0):
        t.forward(size)
    else:
        for angel in [0, 60, (-120), 60]:
            t.left(angel)
            # 函数调用自身,这种调用方式叫做递归
            # 递归时参数变小,画的是更小的雪花
            snow(size / 3, n - 1)

def draw():

    t.speed(0)
    t.penup()
    t.goto((-200), 100)
    t.pendown()
    t.pensize(2)
    level = 3
    snow(400, level)
    t.right(120)
    snow(400, level)
    t.right(120)
    snow(400, level)
    turtle.done()

#开始进入Python的世界
draw()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页