🟢 领航员 🤖 家长演示

⚔️ 第 3 课:初遇妖怪

第 3 课:⚔️ 初遇妖怪

🎯 学习目标

  • 掌握 while 循环(只要条件成立就重复执行)
  • 学会用 break 跳出循环
  • import random 引入随机数("魔法咒语")
  • 实现简单的回合制战斗系统

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

本课核心要点

  • while 条件: — "只要条件还成立,就一直做",像 Scratch 的"重复直到"
  • break — "打断循环立刻跳出"
  • import random — 像念一句魔法咒语,让 Python 获得产生随机数的能力
  • random.randint(1, 10) — 生成 1 到 10 之间的随机整数

常见问题

  • 无限循环(while True 忘了 break)→ 按 Ctrl+C 可以强制停止
  • import 要写在文件最开头 → 口诀:"咒语放最前"

您的角色

🟢 领航员


🔗 Scratch ↔ Python 对照

Scratch 积木 Python 代码 说明
重复执行直到 while not 条件: 一直重复直到条件成立
重复执行(无限) while True: 永远执行(需要 break 退出)
随机取数 110 random.randint(1, 10) 需要先 import random

📖 活动模块

模块 A — 随机魔法(15 分钟)

目标

学习 import random,用随机数生成妖怪数据

  1. 介绍 import:"想象你有个大工具箱,import 就是伸手去拿一个工具。import random 就是拿出'随机数'工具。"
  2. 在文件最顶部添加:import random
  3. 练习生成随机数:
import random
monster_attack = random.randint(5, 15)
print(f"妖怪的攻击力是:{monster_attack}")

运行几次——每次数字都不一样!

模块 B — 回合制战斗(20 分钟)

目标

用 while 循环实现侠客和妖怪轮流攻击

引导孩子写战斗逻辑:

# 妖怪出现
monster_name = "狐妖"
monster_hp = 30
monster_attack = 8

print(f"\n⚔️ 一只{monster_name}挡住了去路!")
print(f"{monster_name}的生命值:{monster_hp}  攻击力:{monster_attack}")

# 回合制战斗
while hp > 0 and monster_hp > 0:
    # 侠客攻击
    damage = random.randint(5, attack)
    monster_hp = monster_hp - damage
    print(f"\n{name}发动攻击!造成 {damage} 点伤害!")
    print(f"{monster_name}剩余生命值:{max(monster_hp, 0)}")

    if monster_hp <= 0:
        print(f"\n🎉 {monster_name}被击败了!")
        break

    # 妖怪反击
    m_damage = random.randint(3, monster_attack)
    hp = hp - m_damage
    print(f"{monster_name}反击!造成 {m_damage} 点伤害!")
    print(f"{name}剩余生命值:{max(hp, 0)}")

模块 C — 战斗可视化(10 分钟)

目标

运行战斗,体验结果

  1. 运行代码,看回合过程一行行打印出来
  2. 多运行几次——因为有随机数,每次战斗结果都不同!
  3. 加入胜利/落败判断:
if hp > 0:
    silver = silver + 10
    print(f"🎉 获得 10 银两!当前银两:{silver}")
else:
    print(f"💀 {name}落败了...回城休息吧")

🎮 运行游戏:打赢妖怪的成就感是本课最大的 fun moment!


🤖 AI 环节(家长演示)

阶段

🟢 家长演示

任务

让 AI 帮忙生成几个中国神话妖怪的名称和描述

示例提示词

帮我想 5 个中国神话里的妖怪名称,每个配一句描述,适合四年级孩子的文字冒险游戏。


✅ 最小完成目标

  • [ ] 能通过 import random 生成随机数
  • [ ] 遇到一只妖怪,完成回合制战斗
  • [ ] 显示战斗过程(攻击、伤害、剩余生命值)

⭐ 扩展挑战

  • 让妖怪的攻击力每回合随机变化
  • 添加"逃跑"选项(break 跳出战斗循环)
  • 胜利后获得银两

🐛 常见错误提示

错误 原因 解决
ModuleNotFoundError import random 没写或写错位置 确保 import random 在文件最顶部
无限循环停不下来 while 条件永远为 True 且没有 break 按 Ctrl+C 停止,检查循环条件
生命值变负数 没用 max() 限制最低为 0 显示时用 max(hp, 0)

💻 代码查看

# ==========================================
# 🎮 少年侠客闯江湖 - 第 3 课
# 📚 本课知识点:while 循环、break、import random
# ==========================================

import random  # 魔法咒语:引入随机数工具

# --- 前面课程的代码 ---
print("=" * 40)
print("  ⚔️  少年侠客闯江湖  ⚔️")
print("=" * 40)

name = input("\n少年侠客,请赐名:")
hp = 100
attack = 15
silver = 0

print(f"\n少年侠客【{name}】,踏入了江湖...")

# 路线选择
print("\n前方出现三条路:")
print("  1. 🏔️ 忘忧山    2. 🐉 龙王洞    3. 👻 幽灵峰")
choice = input("请选择路线(1/2/3):")

if choice == "1":
    print(f"\n{name}走上了忘忧山...")
elif choice == "2":
    print(f"\n{name}踏入了龙王洞...")
elif choice == "3":
    print(f"\n{name}登上了幽灵峰...")
else:
    print("⚠️ 迷路了!默认走忘忧山...")

# --- 本课新内容:初遇妖怪 ---

# TODO: 创建一只妖怪(名字、生命值、攻击力)
# 提示:monster_name = "狐妖"
#       monster_hp = 30
#       monster_attack = 8

# TODO: 用 while 循环实现回合制战斗
# 提示:while hp > 0 and monster_hp > 0:
#           damage = random.randint(5, attack)
#           ...

# TODO: 判断战斗结果(胜利获得银两 / 落败)