发布时间:2026-11-03 18:30:52 浏览次数:21
动态生成樱花
效果图(这个是动态的):
实现代码:
importturtleasTimportrandomimporttime#画樱花的躯干(60,t)defTree(branch,t):time.sleep(0.0005)ifbranch>3:if8<=branch<=12:ifrandom.randint(0,2)==0:t.color('snow')#白else:t.color('lightcoral')#淡珊瑚色t.pensize(branch/3)elifbranch<8:ifrandom.randint(0,1)==0:t.color('snow')else:t.color('lightcoral')#淡珊瑚色t.pensize(branch/2)else:t.color('sienna')#赭(zhě)色t.pensize(branch/10)#6t.forward(branch)a=1.5*random.random()t.right(20*a)b=1.5*random.random()Tree(branch-10*b,t)t.left(40*a)Tree(branch-10*b,t)t.right(20*a)t.up()t.backward(branch)t.down()#掉落的花瓣defPetal(m,t):foriinrange(m):a=200-400*random.random()b=10-20*random.random()t.up()t.forward(b)t.left(90)t.forward(a)t.down()t.color('lightcoral')#淡珊瑚色t.circle(1)t.up()t.backward(a)t.right(90)t.backward(b)#绘图区域t=T.Turtle()#画布大小w=T.Screen()t.hideturtle()#隐藏画笔t.getscreen().tracer(5,0)w.screensize(bg='wheat')#wheat小麦t.left(90)t.up()t.backward(150)t.down()t.color('sienna')#画樱花的躯干Tree(60,t)#掉落的花瓣Petal(200,t)w.exitonclick()飘落效果
效果图:
实现代码:
fromturtleimport*fromrandomimport*frommathimport*deftree(n,l):pd()#下笔#阴影效果t=cos(radians(heading()+45))/8+0.25pencolor(t,t,t)pensize(n/3)forward(l)#画树枝ifn>0:b=random()*15+10#右分支偏转角度c=random()*15+10#左分支偏转角度d=l*(random()*0.25+0.7)#下一个分支的长度#右转一定角度,画右分支right(b)tree(n-1,d)#左转一定角度,画左分支left(b+c)tree(n-1,d)#转回来right(c)else:#画叶子right(90)n=cos(radians(heading()-45))/4+0.5pencolor(n,n*0.8,n*0.8)circle(3)left(90)#添加0.3倍的飘落叶子if(random()>0.7):pu()#飘落t=heading()an=-40+random()*40setheading(an)dis=int(800*random()*0.5+400*random()*0.3+200*random()*0.2)forward(dis)setheading(t)#画叶子pd()right(90)n=cos(radians(heading()-45))/4+0.5pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)circle(2)left(90)pu()#返回t=heading()setheading(an)backward(dis)setheading(t)pu()backward(l)#退回bgcolor(0.5,0.5,0.5)#背景色ht()#隐藏turtlespeed(0)#速度1-10渐进,0最快tracer(0,0)pu()#抬笔backward(100)left(90)#左转90度pu()#抬笔backward(300)#后退300tree(12,100)#递归7层done()
暗色效果
效果:
实现代码:
fromturtleimport*fromrandomimport*frommathimport*deftree(n,l):pd()t=cos(radians(heading()+45))/8+0.25pencolor(t,t,t)pensize(n/4)forward(l)ifn>0:b=random()*15+10c=random()*15+10d=l*(random()*0.35+0.6)right(b)tree(n-1,d)left(b+c)tree(n-1,d)right(c)else:right(90)n=cos(radians(heading()-45))/4+0.5pencolor(n,n,n)circle(2)left(90)pu()backward(l)bgcolor(0.5,0.5,0.5)ht()speed(0)tracer(0,0)left(90)pu()backward(300)tree(13,100)done()