Python 启蒙 · Day 7

键盘控制:让角色动起来

这是孩子第一次做交互程序。目标是按键有反馈,而不是讲清事件系统。

课堂流程(45 分钟)

01

先看交互效果

老师运行最终版,点击 turtle 窗口后按方向键。

02

创建一个角色

这次 turtle 不是画笔,是可以移动的红色玩家。

03

写 move_up()

只做一个方向,看到 y 变大角色向上。

04

绑定 Up 键

listen 是听键盘,onkey 是把按键和动作连起来。

05

补齐四方向

x 控制左右,y 控制上下,加减号决定方向。

教师话术(照着说就行)

"今天不是电脑自己画完,而是你按键,它回应你。"

"listen 就是开始听键盘。"

"onkey 就是:按这个键,就叫这个函数出来工作。"

"注意这里写 move_up,不写 move_up(),因为现在不是马上执行,是交给键盘执行。"

键盘控制怎么讲

screen.listen()

让窗口开始听键盘。

screen.onkey()

把按键和函数连起来。

setx / sety

改变角色的左右和上下位置。

课堂代码

第一步:创建角色

python
import turtle
 
screen = turtle.Screen()
screen.title("键盘控制")
 
player = turtle.Turtle()
player.shape("circle")
player.color("red")
player.penup()
player.goto(0, 0)
 
turtle.done()

第二步:写上移动作

python
step = 20
 
def move_up():
    player.sety(player.ycor() + step)

第三步:绑定键盘

python
screen.listen()
screen.onkey(move_up, "Up")
 
turtle.done()

完整版本

python
import turtle
 
screen = turtle.Screen()
screen.title("第 7 课:键盘控制")
screen.setup(700, 500)
 
player = turtle.Turtle()
player.shape("circle")
player.color("red")
player.penup()
player.goto(0, 0)
 
step = 20
 
def move_up():
    player.sety(player.ycor() + step)
 
def move_down():
    player.sety(player.ycor() - step)
 
def move_left():
    player.setx(player.xcor() - step)
 
def move_right():
    player.setx(player.xcor() + step)
 
screen.listen()
screen.onkey(move_up, "Up")
screen.onkey(move_down, "Down")
screen.onkey(move_left, "Left")
screen.onkey(move_right, "Right")
 
turtle.done()

改一改

给孩子的任务

把 player.color("red") 改成喜欢的颜色。

把 step 改成 10、40,观察移动速度。

把 shape("circle") 改成 shape("turtle")。

新增一个 go_home(),按空格回到原点。

完成标准

孩子能运行后点击 turtle 窗口,再用方向键移动角色。

孩子知道 listen 是开始听键盘。

孩子知道 onkey 是把按键和函数连起来。

孩子能改 step,让角色每次走得更远或更近。

最常见问题是没点击 turtle 窗口。先点击窗口,再按方向键。

做完之后

收尾只问:如果屏幕上有一个目标,角色碰到它就得分,是不是就变成小游戏?