小学生Python进阶:turtle第13课·弹跳的小球
第29篇:弹跳的小球
🚀 前置课程:第28篇 - 创意图案
A 什么是动画?
你有没有想过电视里的动画片是怎么动起来的?
其实很简单——每秒播放很多张图片,每张图片和上一张有一点差别。因为切换太快眼睛看不出来,我们就觉得画面在"动"了!
turtle 也可以画动画!今天我们来做一个小球,让它在屏幕上弹来弹去。
B 代码示例
import turtle
import time
<h1>创建画布</h1>
screen = turtle.Screen()
screen.setup(600, 400)
screen.bgcolor("#f0f0f0")
screen.title("弹跳的小球")
<h1>创建小球</h1>
ball = turtle.Turtle()
ball.shape("circle")
ball.fillcolor("#ff6b6b")
ball.penup()
ball.goto(0, 150) # 从高处开始
<h1>小球初始速度</h1>
dx = 3 # 水平速度
dy = 0 # 垂直速度
gravity = -0.5 # 重力
<h1>弹跳范围</h1>
floor_y = -150
wall_x = 280
while True:
# 应用重力
dy += gravity
# 移动小球
x = ball.xcor() + dx
y = ball.ycor() + dy
ball.goto(x, y)
# 碰到地面弹起来
if y < floor_y:
dy = -dy * 0.9 # 反弹,损失一点能量
ball.sety(floor_y)
# 碰到墙壁反弹
if x > wall_x or x < -wall_x:
dx = -dx
# 稍微停顿,制造动画效果
time.sleep(0.02)
<h1>点击窗口退出</h1>
screen.exitonclick()
C 运行效果
运行代码,你会看到:
- 🔴 红色小球从高处落下
-
- 🚀 受重力影响越落越快
-
- ⚡ 碰到地面后弹起来
-
- 🎯 来回碰撞墙壁
-
多运行几次观察,看看小球每次弹起来的高度有什么变化?
D 本篇知识点
| 知识点 | 说明 |
|---|
| -------- | ------ |
| `time.sleep()` | 控制动画速度,数字越小越流畅 |
| 变量更新 | 每帧改变 x、y 坐标 |
| 条件判断 | 碰到边界就反过来 |
E 挑战题
🏅 初级:把小球改成蓝色
>
🏅 中级:让小球弹得更高(调大反弹系数)
>
🏅 高级:再加一个黄色小球,两个球一起弹
下篇预告
第30篇我们将学到彩虹色环,用 turtle 画出一道美丽的彩虹🌈
⬇️ 公众号底部对话框回复"29"获取源代码