经过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游戏开发!