当前位置:首页>python>小学生Python进阶:turtle第12课·综合项目

小学生Python进阶:turtle第12课·综合项目

  • 2026-10-11 08:20:14
小学生Python进阶:turtle第12课·综合项目

经过28课的学习,你已经掌握了Python的核心技能!

让我们用一个综合项目,把所有知识串联起来:


项目目标

做一个可交互的"小画板+动画播放器",包含:

  • 键盘控制海龟画图
  • 鼠标画笔自由涂鸦
  • 多角色动画演示

完整代码

代码1:整合键盘+鼠标控制

import turtle

def setup_control():
    screen = turtle.Screen()
    t = turtle.Turtle()

    def move_forward():
        t.forward(30)

    def move_back():
        t.backward(30)

    def turn_left():
        t.left(30)

    def turn_right():
        t.right(30)

    def pen_up():
        t.penup()

    def pen_down():
        t.pendown()

    screen.onkey(lambda: move_forward(), 'w')
    screen.onkey(lambda: move_back(), 's')
    screen.onkey(lambda: turn_left(), 'a')
    screen.onkey(lambda: turn_right(), 'd')
    screen.onkey(lambda: pen_up(), 'q')
    screen.onkey(lambda: pen_down(), 'e')
    screen.listen()

    print("控制说明:")
    print("  W - 前进")
    print("  S - 后退")
    print("  A - 左转")
    print("  D - 右转")
    print("  Q - 提笔")
    print("  E - 落笔")
    print("点击窗口关闭")

    turtle.mainloop()

setup_control()

运行后,用WASD控制海龟移动,Q提笔E落笔!

代码2:鼠标画笔板

import turtle

painter = turtle.Turtle()
screen = turtle.Screen()

# 初始设置
painter.pensize(3)
painter.speed(0)
painter.ht()
screen.tracer(0)

colors = ['red', 'orange', 'yellow', 'green',
          'blue', 'purple', 'black']
color_idx = [0]  # 用列表包装,方便在函数内修改

def draw(x, y):
    painter.goto(x, y)
    screen.update()

def change_color(x, y):
    color_idx[0] = (color_idx[0] + 1) % len(colors)
    painter.color(colors[color_idx[0]])

# 先绑定右键换色,再绑定左键画画
screen.onclick(change_color, 3)  # 右键换色
screen.onclick(draw, 1)           # 左键画图

screen.listen()
screen.mainloop()

点击左键画画,右键切换颜色。

代码3:多角色动画(太阳系)

import turtle
import math

screen = turtle.Screen()
screen.tracer(0)
screen.setup(800, 600)

sun = turtle.Turtle()
sun.shape('circle')
sun.shapesize(3)
sun.color('#ffd93d')

planets = []
orbit_radii = [100, 150, 200]
planet_colors = ['#ff6b6b', '#4d96ff', '#6bcb77']

for r, color in zip(orbit_radii, planet_colors):
    p = turtle.Turtle()
    p.shape('circle')
    p.shapesize(0.7)
    p.color(color)
    p.penup()
    p.goto(r, 0)   # 从轨道右侧(0度)开始
    p.pendown()
    planets.append(p)

angle = 0
while True:
    for p, r in zip(planets, orbit_radii):
        rad = math.radians(angle)
        x = r * math.cos(rad)
        y = r * math.sin(rad)
        p.goto(x, y)
    screen.update()
    angle += 2

三个星球围绕太阳旋转,速度由angle增量控制。

知识点回顾

第几课 知识点 本次用途
第3课循环动画角度递增
第7课函数封装键盘控制逻辑
第9课文件读写保存画作到文件
第10课异常处理保护文件保存操作
第22课填充颜色太阳着色
第24课海龟动画tracer(0)+update()
第25课键盘控制onkey监听
第26课鼠标控制onclick绑定
第27课多角色多个Turtle对象

挑战任务

试试把这些功能整合成一个完整的"画画+动画+保存"程序!

保存功能示例:

import turtle

screen = turtle.getscreen()
try:
    canvas = screen.getcanvas()
    canvas.postscript(file='my_drawing.eps')
    print('画作已保存为 my_drawing.eps')
except Exception as err:
    print('保存失败:', err)

恭喜完成turtle全系列!

从第18课到第28课,我们学习了:

  • 画笔控制(前进、后退、转向)
  • 画笔设置(颜色、粗细、形状)
  • 几何图形(圆、多边形、弧形)
  • 填充颜色
  • 动画基础
  • 键盘交互
  • 鼠标交互
  • 多角色动画

下一阶段预告:Pygame游戏开发!

最新文章

随机文章