🔴 观众 🤖 独立使用

🏯 第 9 课:侠客进阶

第 9 课:🏯 侠客进阶(第二次重构)

🎯 学习目标

  • 掌握 Class 类 的基础(class / __init__ / self / 方法)
  • 了解简单继承的概念
  • 正式理解 import 的工作原理
  • 将代码从单文件重构为多文件结构

📚 家长预习指南(5 分钟)

本课核心要点

  • class Hero: — 定义一个类(模板/模具)
  • def __init__(self, name): — 初始化方法,创建实例时自动调用
  • self.name = name — 实例属性(这个角色自己的数据)
  • hero = Hero("小龙") — 创建一个实例(用模具做出一个具体的角色)
  • from hero import Hero — 从另一个文件引入 Hero 类

您的角色

🔴 观众 — 孩子主导,您提供必要的辅助


🔗 Scratch ↔ Python 对照

Scratch 概念 Python 代码 说明
角色(Sprite) class Hero: 定义一种角色的模板
克隆 hero = Hero("小龙") 用模板创建一个具体角色
角色的变量 self.hp = 100 这个角色自己的数据
角色的自制积木 def attack(self): 这个角色会做的事

📖 活动模块

模块 A — 为什么要 Class(15 分钟)

目标

理解从字典到 Class 的升级

"字典管理侠客和妖怪越来越乱了——如果我们能定义一个'模具',每次用模具做出一个新侠客,是不是更方便?这就是 Class!"

模块 B — 创建 Hero 和 Monster 类(25 分钟)

目标

重构侠客和妖怪为 Class,拆分为多文件

将代码拆分为: - hero.py — Hero 类定义 - monster.py — Monster 类定义 - config.py — 游戏参数和数据 - game.py — 主游戏逻辑

模块 C — import 的真相(10 分钟)

目标

理解 import 的工作原理

"还记得第 3 课的'魔法咒语' import random 吗?现在你知道真相了——import 就是从别的文件引入代码!from hero import Hero 就是从 hero.py 文件里拿出 Hero 类来用。"

🎮 运行游戏:多文件版本运行成功——代码更专业了!


🤖 AI 环节(独立使用 + 审视 AI 回答)

阶段

🔴 独立使用

任务 1

孩子独立向 AI 提问——"帮我检查这个 Class 定义有没有错误"

任务 2(审视 AI)

故意让 AI 生成一段有小问题的 Class 代码,引导孩子检查、发现问题并修正。这是培养"AI 不是万能的"批判性思维的好机会!

示例提示词

帮我写一个 Python 的 Monster 类,要有 name、hp、attack 属性。

然后引导孩子对比 AI 的代码和我们的 contracts/game-module-interfaces.md 规范,看看 AI 的版本有没有遗漏。


✅ 最小完成目标

  • [ ] Hero 和 Monster 用 Class 定义
  • [ ] 代码拆分为 hero.py + monster.py + config.py + game.py
  • [ ] 游戏正常运行

⭐ 扩展挑战

  • 尝试简单继承——BossMonster 继承自 Monster,有特殊技能
  • 给 Hero 添加 to_dict() 和 from_dict() 方法(用于存档)

🐛 常见错误提示

错误 原因 解决
ModuleNotFoundError import 的文件不在同一目录 确保所有 .py 文件在同一个文件夹
self 忘了写 Class 方法第一个参数必须是 self def attack(self):
__init__ 拼写错 前后各两个下划线 def __init__(self):

💻 代码查看

# ==========================================
# 🎮 少年侠客闯江湖 - 第 9 课
# 📚 本课知识点:Class 类、模块 import、多文件结构
# ==========================================

# 本课将代码拆分为多文件!
# 请在 lessons/game/ 目录下创建以下文件:
#   hero.py    — Hero 类
#   monster.py — Monster 类
#   config.py  — 游戏参数
#   game.py    — 主游戏逻辑

# TODO: 在 hero.py 中定义 Hero 类
# 提示:class Hero:
#           def __init__(self, name):
#               self.name = name
#               self.hp = 100
#               ...

# TODO: 在 monster.py 中定义 Monster 类
# TODO: 在 config.py 中集中管理游戏数据
# TODO: 在 game.py 中 import 并使用这些模块

# 完成后请查看 lessons/game/ 目录下的参考文件!