分型樱花树 python

樱花树 python

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值