【云云怪】第9个项目:送你一片樱花林
【项目预览】

【创作背景】
CSDN上有大量教你用Turtle画樱花树的教程,我抄了一个。玩了两天,觉得一棵树不过瘾,那么,来一个武汉大学怎么样?
【功能构想】
画树的函数是现成的,我只需要安排两排花树的位置:近大远小,用抛物线来确定各樱花树的位置。以及,远处的树反正看不清,树枝层数也不需要那么多了,节约资源。
写个循环,多实验几次,调整参数,花树的位置就搞定啦~
因为绘画过程漫长,急性子的我一边画,一边打印出每组花树的坐标,作为进程监督。
画完之后,还心血来潮的计算了一下本程序里小乌龟的爬行距离——根据我用尺子量出来的100像素=2.4cm来计算的(算的马马虎虎,不保证准确)。


以上为程序绘制完成的图。最后,用PS美化一下,代表本人最高绘画水平的作品就出炉啦!
【完整代码】
from turtle import *
from random import *
from math import *
import datetimetoday=str(datetime.datetime.now())[:10]def tree(n,l):pd()t=cos(radians(heading()+45))/8+0.25pencolor(t,t,t)pensize(n/4)forward(l)if n>0:b=random()*15+shapec=random()*15+shaped=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(0.5+n*0.5,0.4+n*0.4,0.4+n*0.4)fillcolor(0.5+n*0.5,0.4+n*0.4,0.4+n*0.4)begin_fill()circle(2)end_fill()left(90)if(random()>0.75):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(0.5+n*0.5,0.4+n*0.4,0.4+n*0.4)#fillcolor(0.5+n*0.5,0.4+n*0.4,0.4+n*0.4)#begin_fill()circle(2)#end_fill()left(90)pu()#返回t=heading()setheading(an)backward(dis)setheading(t)pu()backward(l)shape=5setup(1024,576)
bgcolor(0.5,0.5,0.5)
ht()
tracer(0,0)
speed(0)
pu()
left(90)zongldis=0for i in range(12):x1=25+2*i*ix2=-25-2*i*iy=80-3.4*i*ilength=20+8*ikey=7+round(i/3)pu()print('n=',str(i+1)+' ('+str(x1)+','+str(round(y))+') key='+str(key)+' l='+str(length))goto(x1,y)tree(key,length)goto(x2,y)tree(key,length)ldis=0for j in range(12):ldis+=1.56**jldis=2*ldis*lengthzongldis+=ldisprint('即将绘制完毕')cdis=2*2*24115*1.25+2*24115*0.25*12*100/2.4
tdis=round((cdis+ldis)*0.024*0.01*100)/100
print('\n小乌龟一共爬行了{}米,可把它累坏了。。。记得给它投食哦!'.format(tdis))pu()
goto(0,0)
backward(220)
pd()
pencolor(0.7,0.7,0.7)
write('送你一个武汉大学',font=('Arial',10))
pu()
backward(20)
pd()
write(today)
done()
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
