单元五

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

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

一、任务目标

理解把开始、一回合、结束分别写成函数,主程序只负责调用顺序;能说明拆分后更易阅读和修改。

二、我们要学什么

  • 学习要点:把游戏拆成多个函数|结构
  • 本课过关:能完成:说出主程序通过调用组织流程;载入体验程序,指出开始、回合、结束是不同函数;改其中一个函数体,只有对应阶段变化。
  • 示例对齐:体验题对应本课「编程体验」;完整代码对应编程题1;补全与独立编写对应编程题2–3。均在 Mixly 图形化积木中完成。

三、本节要点

本课要认识用函数拆分游戏。重难点是先规划各函数做什么,再写主程序调用。要点对齐「把游戏拆成多个函数|结构」。

1读场景明确真实任务
2对要点把游戏拆成多个函数|结构
3载入运行图形化积木

四、解题思路

任务:用多个函数拼出一局游戏。请分清:每个函数负责哪一段。

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

  1. 1明确任务「拆成几段」:开始、回合、结束应分开。
  2. 2分别定义函数,主程序按顺序调用。
  3. 3只改一个函数后重跑,确认其余阶段保持不变。

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

任务:拆成几段分别定义函数,主程序按顺序调用只改一个函数后重跑

五、图形块讲解

本课用到的 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. 把游戏拆成多个函数,主要目的是?

  4. 「主程序」在本课更像?

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

九、本节小结

本课主题是用函数拆分游戏:开始、回合、结束分开写,主程序负责调用顺序。