单元五
第17课 把游戏拆成多个函数

一、任务目标
把一个小游戏拆成多个函数,再用 main 串起来。
二、一个函数一件事
当游戏变长,把「显示标题」「询问指令」「探路」「休息」拆开,主流程只负责调度:
- 好读:打开
main就能看懂玩法骨架 - 好改:只改
do_rest不影响探路 - 好测:可以单独调用某个函数试验数值
三、解题思路
任务:把一个小游戏拆成多个函数,再用 main 串起来。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。
本课主要用到:屏幕输出。
- 1明确任务「把一个小游戏拆成多个函数,再用 main 串起来。」:运行后你希望看到什么结果(文字、图形或计算结果)。
- 2用「打印」积木把结果说出来,确认屏幕上出现预期内容。
- 3写出判断条件:什么情况下走 A,什么情况下走 B。
- 4用 while 保持程序持续运行或等待条件变化。
- 5把可复用的一段动作做成函数,主程序里调用它。
- 6对照参考积木(或代码)跑通后,只改一个参数,观察结果如何变化。
流程示意(可对照左侧文字)
四、图形块功能讲解
本课用到的 Mixly 图形块均已在前面的课讲过。请直接对照编程练习搭积木;若有遗忘,回到该积木首次出现的课页复习。
五、知识点讲解
函数把一段可复用的步骤起名,需要时「叫一下」就执行。它需要什么信息(参数)、会带来什么结果,要先想清。封装后主程序更短,改一处就能处处生效。
先弄清本课输入与输出,再进编程练习对照现象。
六、编程练习
用下拉列表切换题目;下方 Mixly 默认显示图形化积木。请在 Mixly 工具栏点「运行」;「检查」读取 Mixly 代码判题。
先阅读并运行,感受游戏循环。
参考代码(对照抄写到下方 Mixly)
def show_title():
print("==== 迷你冒险 ====")
def ask_action():
return input("1探路 2休息 0退出:")
def do_explore(state):
print("你发现了宝箱!")
state["gold"] = state["gold"] + 10
def do_rest(state):
print("你休息了一会儿。")
hp2 = state["hp"] + 15
if hp2 > 100:
hp2 = 100
state["hp"] = hp2
def main():
show_title()
state = {"hp": 80, "gold": 0}
while True:
print("HP", state["hp"], "金币", state["gold"])
act = ask_action()
if act == "0":
print("下次见!")
break
elif act == "1":
do_explore(state)
elif act == "2":
do_rest(state)
else:
print("无效指令")
main()
正在载入编程环境
正在载入 Mixly 图形化编程环境…
七、课堂练习
选出你认为正确的一项,再点「检查」。
把游戏拆成多个函数,主要目的是?
「主程序」在本课示例里更像?
单一职责更接近哪句?
八、本节小结
把游戏拆成多个函数,大程序会更清楚。