Turtle(7)制作简单动画

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()

代码分析:

  1. 每次都要清一下屏:
turtle.clear()

2.将雪花的坐标往下移5个像素,造成一种雪花在下掉的过程

y -= 5  # y = y -5
  1. 在新的位置重新画一个雪花
koch((x,y), 30, 3)
  1. 绘制完后刷新
turtle.update()
  1. 等待下次重新绘制与更新
time.sleep(t) 

第五点的效果是让系统睡t秒.等待下次更新.

后记:

动画的效果本质上是一连串的静态图片的快速,连续的变化造成的视觉效果.
因此,当我们将各个时间点的图片绘制出来,就会给人一种动画的效果.
来看一下不飘逸的雪花效果
Turtle(7)制作简单动画

上一篇:软件工程基础-个人项目数独


下一篇:120行代码爬取豆瓣电影,附源码!就拿刚上映的复联4做例子!