Python 挑战版 · Day 7
键盘控制:让程序回应输入
从“代码画完就结束”进入交互程序:按键触发函数,函数改变角色坐标。
节奏分配(45 分钟)
01
复习判断
边界限制就是 if:还没到边界,才允许继续移动。
02
创建玩家角色
让 turtle 变成玩家,不再是画线的笔。
03
写移动函数
用 xcor/ycor 读取位置,用 setx/sety 设置新位置。
04
绑定方向键
listen 接收按键,onkey 把按键和函数绑定。
05
加入边界判断
用 if 防止角色跑出窗口。
教师话术
"按键不是直接移动角色,按键会调用一个函数。"
"onkey 里写 move_up,不写 move_up(),因为不是现在调用。"
"x 负责左右,y 负责上下。加号往正方向,减号往反方向。"
"边界判断就是:如果还没到边缘,才允许继续走。"
键盘知识卡
screen.listen()让窗口开始接收键盘输入。
screen.onkey(move_up, "Up")按 Up 键时调用 move_up。
player.ycor()读取角色现在的 y 坐标。
player.sety(new_y)把角色移动到新的 y 坐标。
课堂代码
创建角色
python
screen = turtle.Screen()
screen.setup(700, 500)
player = turtle.Turtle()
player.shape("circle")
player.color("red")
player.penup()
player.goto(0, 0)四个移动函数
python
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)绑定方向键
python
screen.listen()
screen.onkey(move_up, "Up")
screen.onkey(move_down, "Down")
screen.onkey(move_left, "Left")
screen.onkey(move_right, "Right")边界判断
python
top_edge = 220
def move_up():
if player.ycor() < top_edge:
player.sety(player.ycor() + step)完整版本
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
left_edge = -320
right_edge = 320
top_edge = 220
bottom_edge = -220
def move_up():
if player.ycor() < top_edge:
player.sety(player.ycor() + step)
def move_down():
if player.ycor() > bottom_edge:
player.sety(player.ycor() - step)
def move_left():
if player.xcor() > left_edge:
player.setx(player.xcor() - step)
def move_right():
if player.xcor() < right_edge:
player.setx(player.xcor() + step)
def go_home():
player.goto(0, 0)
screen.listen()
screen.onkey(move_up, "Up")
screen.onkey(move_down, "Down")
screen.onkey(move_left, "Left")
screen.onkey(move_right, "Right")
screen.onkey(go_home, "space")
turtle.done()分层挑战
基础
改角色颜色、形状和 step。
进阶
绑定 space,让角色回到原点。
挑战
加边界提示:碰到边界时写出“到边了”。
完成标准
能解释按键如何调用函数。
能用四个方向键移动角色。
能解释 x/y 和加减号对应的方向。
能用 if 限制角色不跑出屏幕。
关键风险是把 move_up 写成 move_up()。这里是交给键盘调用,不是立即执行。
做完之后
收尾问题:角色能动了。如果碰到一个目标就加分,这就是 Day 8 的小游戏。
模块目录
Python 启蒙