动画效果

让图形动起来

动画可以让我们的图形更加生动有趣!让我们学习如何创建简单的动画效果。

控制海龟速度

使用 speed() 方法可以控制海龟的移动速度:

import turtle

t = turtle.Turtle()

# 设置速度(1-10,1最慢,10最快)
t.speed(5)

# 画正方形
for i in range(4):
    t.forward(100)
    t.right(90)

旋转动画

让我们创建一个旋转动画:

import turtle

t = turtle.Turtle()
t.speed(1)  # 最慢速度

# 画彩色正方形并旋转
colors = ["red", "orange", "yellow", "green", "blue", "purple"]

for i in range(36):  # 旋转36次,共360度
    t.pencolor(colors[i % len(colors)])

    # 画一个小正方形
    for j in range(4):
        t.forward(50)
        t.right(90)

    t.right(10)  # 每次右转10度

移动动画

让我们创建一个移动动画:

import turtle

t = turtle.Turtle()
t.speed(3)  # 较慢速度

# 画移动的圆
for i in range(100):
    t.circle(50 + i * 0.5)  # 圆的半径逐渐增大
    t.right(5)             # 每次右转5度

颜色渐变动画

让我们创建一个颜色渐变动画:

import turtle

t = turtle.Turtle()
t.speed(5)

# 画颜色渐变的正方形
for i in range(100):
    # 计算RGB颜色值(从红到蓝)
    r = int(255 * (1 - i / 100))  # 红色逐渐减少
    b = int(255 * (i / 100))      # 蓝色逐渐增加

    t.pencolor(r, 0, b)
    t.forward(5)
    t.right(90)

弹跳动画

让我们创建一个弹跳球动画:

import turtle

t = turtle.Turtle()
t.shape("circle")  # 设置海龟形状为圆形
t.fillcolor("red")
t.speed(5)

# 弹跳动画
for i in range(20):
    # 向上移动
    for j in range(10):
        t.setheading(90)  # 向上
        t.forward(10)

    # 向下移动
    for j in range(10):
        t.setheading(270)  # 向下
        t.forward(10)

花朵绽放动画

让我们创建一个花朵绽放动画:

import turtle

t = turtle.Turtle()
t.speed(5)

# 花朵绽放动画
for i in range(20):
    # 设置花瓣颜色
    t.pencolor("pink")
    t.fillcolor("pink")

    # 开始填充
    t.begin_fill()

    # 画花瓣
    for j in range(6):
        t.forward(20 + i * 2)  # 花瓣逐渐变大
        t.right(60)

    # 结束填充
    t.end_fill()

    # 重置位置和角度
    t.penup()
    t.goto(0, 0)
    t.setheading(0)
    t.pendown()

    # 稍微旋转,创建绽放效果
    t.right(i * 2)

星空闪烁动画

让我们创建一个星空闪烁动画:

import turtle
import random

# 设置背景
turtle.bgcolor("black")
screen = turtle.Screen()

# 创建多个星星海龟
stars = []
for i in range(20):
    star = turtle.Turtle()
    star.shape("circle")
    star.shapesize(0.1, 0.1, 0.1)  # 小圆点
    star.fillcolor("white")
    star.penup()

    # 随机位置
    x = random.randint(-200, 200)
    y = random.randint(-200, 200)
    star.goto(x, y)

    stars.append(star)

# 闪烁动画
for i in range(50):
    for star in stars:
        # 随机显示或隐藏星星
        if random.randint(0, 1) == 0:
            star.fillcolor("white")
        else:
            star.fillcolor("black")

    screen.update()  # 更新屏幕

练习

  1. 创建一个旋转的彩色风车
  2. 创建一个弹跳的球
  3. 创建一个颜色渐变的圆形
  4. 创建你自己的创意动画

小提示

  • 使用 t.speed(0) 可以关闭动画,立即完成绘制
  • 使用 turtle.tracer(0)turtle.update() 可以控制动画更新
  • 使用 t.shape(name) 可以改变海龟的形状
  • 使用 t.shapesize(width, height) 可以改变海龟的大小

思考题

如果你想创建一个平滑的动画,应该注意哪些方面?


下一课我们将通过综合项目练习所学知识!🐢

Python 工具/在线模拟器/Python海龟绘图可视化
Python海龟绘图可视化 - https://www.cnbbx.com/python-editor/