赞
踩
上次用turtle做了一个爱心,这次我们来做一个旋转的风车,先放下图,看一下完成后的效果
现在我们开始代码的编写
一片叶子我们用一深一浅两个三角形就可以实现了,下面以0度方向的叶子为例,我们写出的代码如下
有了一个叶子,生成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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。