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() |