
根据输入的数字,绘制有相应数量叶子的树枝
树枝有合适的弧度
页面中随机布局多个树枝
import turtle
def main_(t, sPos):
t.up()
t.setpos(*sPos)
t.pensize(2)
cod = []
t.pd()
t.seth(90)
for i in range(0, 41):
t.fd(5)
if i % 5 == 0:
cod.append((t.xcor(), t.ycor(),t.heading()))
t.right(2)
t.up()
cod.append((t.xcor(), t.ycor(), t.heading()))
return cod
def draw_leaf(t, tPos, angle, flgUD = False):
t.up()
t.setpos(*tPos)
t.seth(angle)
fun = t.right
if flgUD:
fun = t.right
else:
fun = t.left
fun(30)
t.pd()
for _ in range(30):
t.fd(1)
fun(3)
pp = t.xcor(), t.ycor()
fun(90)
for _ in range(30):
t.fd(1)
fun(3)
t.up()
t.setpos(*pp)
t.pd()
t.goto(*tPos)
t.up()
t = turtle.Turtle()
t.ht()
turtle.tracer(0)
res = main_(t, (0, 0))
print(res)
for i in res[1:-2]:
draw_leaf(t, tPos = i[:2], angle = i[-1])
draw_leaf(t, tPos = i[:2], angle = i[-1], flgUD = True)
draw_leaf(t, tPos = res[-1][:2], angle = -45)
turtle.tracer(1)
turtle.done()

import turtle,math,random
t=turtle.Turtle()
t.speed(0)
t.lt(90)
l=60*math.sin(5*math.pi/18)
def fun(r): #画一截树叶
t.lt(r)
t.fd(40)
t.lt(10)
t.circle(30,100)
t.lt(80)
t.circle(30,100)
t.lt(130)
p=t.pos()
t.fd(l)
t.up()
t.goto(p)
t.down()
t.rt(70)
t.circle(-30,100)
t.rt(80)
t.circle(-30,100)
t.rt(130)
p=t.pos()
t.fd(l)
t.up()
t.goto(p)
t.down()
t.lt(60+r)
n=int(turtle.numinput('Title','枝叶数',8)) #输入枝叶数
for i in range(10): #画十个树枝
r=random.randint(-8,8) #弯曲度
for i in range(n):
fun(r)
t.fd(l+25)
t.lt(130)
t.circle(30,100)
t.lt(80)
t.circle(30,100)
t.up()
t.goto(random.randint(-200,200),random.randint(-200,200)) #移向随机位置
t.seth(90+r)
t.down()
