Turtle(7)製作簡單動畫
阿新 • • 發佈:2020-12-26
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秒.等待下次更新.
後記:
動畫的效果本質上是一連串的靜態圖片的快速,連續的變化造成的視覺效果.
因此,當我們將各個時間點的圖片繪製出來,就會給人一種動畫的效果.
來看一下不飄逸的雪花效果