上次用turtle做了一个爱心,这次我们来做一个旋转的风车,先放下图,看一下完成后的效果
现在我们开始代码的编写
设计叶子
一片叶子我们用一深一浅两个三角形就可以实现了,下面以0度方向的叶子为例,我们写出的代码如下
用循环改为生成4个叶子
有了一个叶子,生成4个叶子也比较容易了,我们只要写一个循环,然后循环里用90的倍数去指定下方向角,剩下的绘制代码就一样了
加一个棒子
给风车的下面加一个稍稍粗一些的棒子,我们只要设置下画笔的粗细画一跟直线就可以了
风车的旋转
风车已经画完了,但是下面我们怎么才能让它转起来呢? 看到我们用循环出4个叶子的代码,在那里我们是指定了角度是90的倍数,把叶子的方向写成固定的了,如果我们把那个角度变成一个变化的变量,就可以让叶子往不同的角度转了。为方便使用,我们先定一个draw函数,让它可以接收自己指定的角度。
修改下大概是下面的代码
import turtle as t
t.speed(0)
def draw(r):
# 画一个风车的棒子
t.pensize(4) # 棒子4像素粗
t.penup()
t.goto(0,0)
t.pendown()
t.goto(0,-150)
t.pensize(1)
for i in range(4):
t.setheading(i * 90 + r)
t.penup()
t.goto(0,0)
t.pendown()
# 浅蓝色三角形
t.fillcolor('#50B2F8')
t.begin_fill()
t.forward(100)
t.left(150)
t.forward(70)
t.end_fill()
# 靠近中心的深蓝色三角形
t.fillcolor('#063EC5')
t.begin_fill()
t.left(30)
t.forward(40)
t.left(90)
t.forward(35)
t.end_fill()
draw(30) # 尝试不同的角度,叶子已经可以转到我们想要的角度了
t.done()
角度可以变了,但是转动的动画还没有,这个要怎么做呢? 我们可以写一个循环去调用这个draw函数
for r in range(0,360*100,3): # 这里是旋转100圈,也可以用while循环,让它不停转,步长3对应的是转速,也可以改为1、2看看效果
t.tracer(False)
t.clear()
draw(r)
time.sleep(0.01)
t.hideturtle()
t.tracer(True)
好了,现在风车终于可以转起来了,最后我们贴下完成的代码
import turtle as t
import time
def draw(r):
# 画一个风车的棒子
t.pensize(4) # 棒子4像素粗
t.penup()
t.goto(0,0)
t.pendown()
t.goto(0,-150)
t.pensize(1)
for i in range(4):
t.setheading(i * 90 + r)
t.penup()
t.goto(0,0)
t.pendown()
# 浅蓝色三角形
t.fillcolor('#50B2F8')
t.begin_fill()
t.forward(100)
t.left(150)
t.forward(70)
t.end_fill()
# 靠近中心的深蓝色三角形
t.fillcolor('#063EC5')
t.begin_fill()
t.left(30)
t.forward(40)
t.left(90)
t.forward(35)
t.end_fill()
# 用速度1播放一次绘制过程
t.speed(1)
draw(0)
for r in range(0,360*100,3): # 这里是旋转100圈,也可以用while循环,让它不停转,步长3对应的是转速,也可以改为1、2看看效果
t.tracer(False)
t.clear()
draw(r)
time.sleep(0.01)
t.hideturtle()
t.tracer(True)
t.done()