Turtle(7)制作简单动画
前言
我们已经学会了绘制简单的图, 本期开始,我们将学习如何用turtle库制作动画.
学习目标
- 初步了解动画制作的原理
- 做一个简单的落雪效果
代码学习
画一片雪花
# 画三分之一的雪
def koch_1(size, n):
if n == 0:
turtle.fd(size)
else:
for angle in [0, 60, -120, 60]:
turtle.left(angle)
koch_1(size / 3, n - 1)
# 画整朵的雪
def koch(pos, size, n):
turtle.pen()
turtle.goto(pos)
turtle.pendown()
koch_1(size,n)
turtle.right(120)
koch_1(size, n)
turtle.right(120)
koch_1(size, n)
turtle.right(120)
动画初始化
turtle.tracer(0)
turtle.hideturtle()
FPS = 30 # 每秒帧数
t = 1 / FPS # 更新时间,一秒30帧
turtle.setup(800, 800)
x, y = 20, 400 # 雪花初始位置
动画逻辑
while y>-380:
turtle.clear()
y -= 5
koch((x,y), 30, 3)
turtle.update()
time.sleep(t)
turtle.done()
代码分析:
- 每次都要清一下屏:
turtle.clear()
2.将雪花的坐标往下移5个像素,造成一种雪花在下掉的过程
y -= 5 # y = y -5
- 在新的位置重新画一个雪花
koch((x,y), 30, 3)
- 绘制完后刷新
turtle.update()
- 等待下次重新绘制与更新
time.sleep(t)
第五点的效果是让系统睡t秒.等待下次更新.
后记:
动画的效果本质上是一连串的静态图片的快速,连续的变化造成的视觉效果.
因此,当我们将各个时间点的图片绘制出来,就会给人一种动画的效果.
来看一下不飘逸的雪花效果