单元五

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

任务场景:把游戏拆成多个函数再串起来
任务场景:把游戏拆成多个函数再串起来

一、任务目标

把一个小游戏拆成多个函数,再用 main 串起来。

二、一个函数一件事

当游戏变长,把「显示标题」「询问指令」「探路」「休息」拆开,主流程只负责调度:

  • 好读:打开 main 就能看懂玩法骨架
  • 好改:只改 do_rest 不影响探路
  • 好测:可以单独调用某个函数试验数值

三、解题思路

任务:把一个小游戏拆成多个函数,再用 main 串起来。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。

本课主要用到:屏幕输出。

  1. 1明确任务「把一个小游戏拆成多个函数,再用 main 串起来。」:运行后你希望看到什么结果(文字、图形或计算结果)。
  2. 2用「打印」积木把结果说出来,确认屏幕上出现预期内容。
  3. 3写出判断条件:什么情况下走 A,什么情况下走 B。
  4. 4用 while 保持程序持续运行或等待条件变化。
  5. 5把可复用的一段动作做成函数,主程序里调用它。
  6. 6对照参考积木(或代码)跑通后,只改一个参数,观察结果如何变化。

流程示意(可对照左侧文字)

任务:把一个小游戏拆…用「打印」积木把结果说出来,…写出判断条件:什么情况下走…用while保持程序持续运…把可复用的一段动作做成函数…

四、图形块功能讲解

本课用到的 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()

七、课堂练习

选出你认为正确的一项,再点「检查」。

  1. 把游戏拆成多个函数,主要目的是?

  2. 「主程序」在本课示例里更像?

  3. 单一职责更接近哪句?

八、本节小结

把游戏拆成多个函数,大程序会更清楚。