python用turtle画一个旋转的风车
上次用turtle做了一个爱心,这次我们来做一个旋转的风车,先放下图,看一下完成后的效果现在我们开始代码的编写设计叶子一片叶子我们用一深一浅两个三角形就可以实现了,下面以0度方向的叶子为例,我们写出的代码如下用循环改为生成4个叶子有了一个叶子,生成4个叶子也比较容易了,我们只要写一个循环,然后循环里用90的倍数去指定下方向角,剩下的绘制代码就一样了加一个棒子给风车的下面加一个稍稍粗一些的棒子,我们
·
上次用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()
更多推荐
已为社区贡献4条内容
所有评论(0)