Python 启蒙 · Day 8
收集宝石:做一个能玩的小游戏
这节课的重点是成就感:先让每个孩子拿到可运行版本,再用 10 分钟改成自己的游戏。
课堂流程(45 分钟)
01
先玩一次成品
老师运行完整游戏:方向键移动,碰到宝石加分。
02
接上 Day 7 角色
沿用键盘控制代码,确认角色能动。
03
放一个随机宝石
用 random.randint 让宝石出现在不同位置。
04
碰到就换位置
用 distance 判断角色和宝石是不是靠得很近。
05
加入分数和胜利
每收一次加 1 分,到 5 分写出“你赢了”。
06
自由魔改和展示
留时间让孩子改主题,并说出自己改了什么。
教师话术(照着说就行)
"今天我们把前面学过的东西合成一个真正能玩的小游戏。"
"宝石的位置每次不一样,是 random 在帮我们随机选坐标。"
"distance 是量距离。距离很近,就算角色碰到了宝石。"
"分数会变,所以 score 是变量。函数里要改它,就加一行 global score。"
今天新增的两个机制
随机宝石
每次收集后,宝石换到一个新坐标。
python
import random
gem = turtle.Turtle()
gem.shape("circle")
gem.color("gold")
gem.penup()
gem.goto(random.randint(-250, 250), random.randint(-180, 180))碰撞检测
距离小于 25,就当作碰到了宝石。
python
def check_gem():
if player.distance(gem) < 25:
gem.goto(random.randint(-250, 250), random.randint(-180, 180))完整课堂代码
python
import turtle
import random
screen = turtle.Screen()
screen.title("第 8 课:收集宝石")
screen.setup(700, 500)
player = turtle.Turtle()
player.shape("turtle")
player.color("green")
player.penup()
player.goto(0, 0)
gem = turtle.Turtle()
gem.shape("circle")
gem.color("gold")
gem.penup()
gem.goto(random.randint(-250, 250), random.randint(-180, 180))
score = 0
win_score = 5
pen = turtle.Turtle()
pen.hideturtle()
pen.penup()
pen.goto(-310, 210)
pen.write("分数: 0", font=("Arial", 16, "bold"))
step = 20
def update_score():
global score
score = score + 1
pen.clear()
pen.goto(-310, 210)
pen.write(f"分数: {score}", font=("Arial", 16, "bold"))
if score >= win_score:
pen.goto(0, 0)
pen.write("你赢了!", align="center", font=("Arial", 36, "bold"))
def check_gem():
if player.distance(gem) < 25:
update_score()
gem.goto(random.randint(-250, 250), random.randint(-180, 180))
def move_up():
player.sety(player.ycor() + step)
check_gem()
def move_down():
player.sety(player.ycor() - step)
check_gem()
def move_left():
player.setx(player.xcor() - step)
check_gem()
def move_right():
player.setx(player.xcor() + step)
check_gem()
screen.listen()
screen.onkey(move_up, "Up")
screen.onkey(move_down, "Down")
screen.onkey(move_left, "Left")
screen.onkey(move_right, "Right")
turtle.done()自由魔改
给孩子 10-12 分钟
把 player.shape("turtle") 改成 circle、square。
把 step 改成 10 或 30,调整移动速度。
把 win_score 改成 3 或 10,调整胜利难度。
把 gem.color("gold") 改成 red、blue、purple。
完成标准
孩子能运行游戏,并用方向键收集宝石。
孩子知道 score 是分数,收一次宝石就加 1。
孩子能修改颜色、速度或胜利分数。
孩子能展示自己的版本,说出“我改了什么”。
如果课堂时间紧,优先保证基础版能跑。展示环节不要省掉,它是这节课的收官。
展示收尾
每个孩子只说一句:我的游戏里,我改了什么。老师只追问一个问题:你最满意哪一处?
模块目录
Python 启蒙