导语
嗯哼!这么快又到了周六。
上班的日子总是格外的漫长!
脑袋的转速也比较慢,实在不知道做啥,上班一直在打酱油,大脑一片空白撒,也不知道自己在做什么!
无所事事了好久之后,终于一眼望上去,看到了这代码爱了爱了,so 应该是你们喜欢的类型!
今天带大家编写一款精美碎花小清新风格树!落英缤纷!
正文
还是你们熟悉的样子:Turtle用的越久,越觉得好用!真香!
(1)首先绘制树木的躯干。
from turtle import * left ( 80 ) fd( 100 ) right ( 30 ) fd( 30 ) right ( 30 ) fd( 40 ) input() 结果如下:
我们先更改一下绘制的线段粗细,和颜色,让绘制的图片看起来更像树。color|pensize()
通过t.pensize()、t.color()更改笔的粗细与颜色,加长一下树的枝干和缩小一下笔的粗细:
from turtle import * color('#5E5E5E') pensize(6) left(80) fd(150) right(30) fd(50) right(30) fd(60) input()
效果如下:
(2)首先绘制树的主干,随后使用函数绘制树的枝条:
from turtle import * def drawTree(length): right(20) fd(length) color('#5E5E5E') pensize(5) up() goto(0,-300)#跳到绘制起始点 down() left(80) fd(140) drawTree(60) input()
使用递归开始进行枝条的绘制:
from turtle import * def drawTree(length): if length>1: right(20) fd(length) drawTree(length - 10) color('#5E5E5E') pensize(5) up() goto(0,-300)#跳到绘制起始点 down() left(80) fd(140) drawTree(60) input()
现在的长度、旋转角度是有有固定差值的,使用随机数使绘制的树枝更贴合实际:
def drawTree(length): if length>1: right(20) fd(length) randlen=random.random() drawTree(length - 10*randlen)
def drawTree(length): if length>1: randangle=random.random() randlen=random.random() right(20*randangle) fd(length) drawTree(length - 10*randlen)
(3)绘制向左向右树枝枝条:
from turtle import * import random def drawTree(length): if length>1: #随机角度与长度 randangle=random.random() randlen=random.random() #每次使用函数先绘制线段,再调整角度,这里是向右的角度转动 fd(length) right(20*randangle) drawTree(length - 10*randlen) #这里是向左的角度转动 left(40 * randangle) drawTree(length - 10*randlen) #为什么需要再向右转20度?那是因为我一共向左转了40度,使用backward后退,必须是相同的角度,不然退回去角度就不同了位置就不会对 right(20 * randangle) up() backward(length) down() setworldcoordinates(-1000,-750,1000,750) tracer(False) color('#5E5E5E') pensize(5) up() goto(0,-300)#跳到绘制起始点 down() left(80) fd(140) drawTree(120) input()
但是由于随机数的转角和枝条长度没有限制最低的长度,可以在随机的时候给一个合适的数字相乘,并且把起笔位置再往下调,代码如下:
randangle=2*random.random() randlen=2*random.random() . . . . . . goto(0,-700)
效果图:
(4)树枝树干都绘制完成, 就剩下红花绿叶了!
from turtle import * import random def drawTree(length): if length>1: if length<30 and length>14:#缩小一下树干 pensize(4) elif length<15 and length>5:#长度这个范围内那么就是绿叶 color('#04B486')# pensize(3) elif length<5 and length>1:#红花 color('#FE2E9A') pensize(2) else: color('#5E5E5E')#其他范围就是正常的树干 pensize(5) #随机角度与长度 randangle=2*random.random() randlen=2*random.random() #每次使用函数先绘制线段,再调整角度,这里是向右的角度转动 fd(length) right(20*randangle) drawTree(length - 10*randlen) #这里是向左的角度转动 left(40 * randangle) drawTree(length - 10*randlen) #为什么需要再向右转20度?那是因为我一共向左转了40度,使用backward后退,必须是相同的角度,不然退回去角度就不同了位置就不会对 right(20 * randangle) up() backward(length) down() setworldcoordinates(-1000,-750,1000,750) tracer(False) color('#5E5E5E') pensize(5) up() goto(0,-700)#跳到绘制起始点 down() left(80) fd(140) drawTree(120) input()
效果如下:
(5)绘制落花:
from turtle import * import random def drawTree(length): if length>1: if length<30 and length>14:#缩小一下树干 pensize(4) elif length<15 and length>5:#长度这个范围内那么就是绿叶 color('#04B486')# pensize(3) elif length<5 and length>1:#红花 color('#FE2E9A') pensize(2) else: color('#5E5E5E')#其他范围就是正常的树干 pensize(5) #随机角度与长度 randangle=2*random.random() randlen=2*random.random() #每次使用函数先绘制线段,再调整角度,这里是向右的角度转动 fd(length) right(20*randangle) drawTree(length - 10*randlen) #这里是向左的角度转动 left(40 * randangle) drawTree(length - 10*randlen) #为什么需要再向右转20度?那是因为我一共向左转了40度,使用backward后退,必须是相同的角度,不然退回去角度就不同了位置就不会对 right(20 * randangle) up() backward(length) down() def fallingFlowers(m): x,y=-1000,-750 for i in range(30): up() goto(x,y) x+=100 down() yval=50 for i in range(m): a = 100*random.random() b = 2*random.random() print(a) if a>59: color('#FE2E9A') else: color('#04B486') circle(5) up() goto(x,y+(yval*b)) fd(a) yval+=50 down() setworldcoordinates(-1000,-750,1000,750) tracer(False) color('#5E5E5E') pensize(5) # up() # goto(0,-700)#跳到绘制起始点 # down() # left(80) # fd(140) # drawTree(120) fallingFlowers(10) input()
效果图如下:
最终绘制完成的效果图:
总结
带你们看的落英缤纷,喜欢嘛?记得一键三连哦!!
如果需要新手安装包激活码、配套完整项目+源码笔记、更多Python资料
源码基地:#959755565#即可免费领取哦!!