Turtle无所不能:秋天到了,啥时候带你们去看落英缤纷?导语 嗯哼!这么快又到了周六。 上班的日子总是格外的漫长! 脑
导语
嗯哼!这么快又到了周六。
上班的日子总是格外的漫长!
脑袋的转速也比较慢,实在不知道做啥,上班一直在打酱油,大脑一片空白撒,也不知道自己在做什么!
直到看到一篇大佬的文章,一眼望上去,这代码爱了爱了,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资料
源码基地:#私信小编06#即可免费领取哦!!
转载自:https://juejin.cn/post/7003969110149169160