# L1-15《飞机大战》PPT 大纲

> 面向学生 · 🔴 项目综合实战课 · 素材上传首次教学 · 克隆体删除深入 · 爆炸造型切换 · 多角色碰撞

---

## 第一关 · 课前导入

### 第1页 封面
- 大标题（深红色字）：**L1-15 飞机大战** ✈️💥
- 副标题：和小超人一起保卫地球！🌍
- 画面元素：玩家飞机、敌机群、子弹射击、爆炸特效、星空背景
- 品牌条：L1-15

### 第2页 温故知新（回顾 L1-14）
- 标签：🔁 温故知新
- 回顾卡（图文）：
  - 📦 **变量深化**：创建变量→初始化→增减（L1-9→L1-14两课经验）
  - ⏱ **计时器**：侦测模块→勾选显示→归零→判断时间到停止
  - 🧬 **克隆深入**：本体隐藏→随机间隔克隆→「删除此克隆体」
  - 🔀 **两种移动法**：坐标法（x增减）vs 方向+移动法（面向+步数）
  - 🚢 **草船借箭**：草船移动+箭矢克隆+得分变量+计时器
- 引导语："上节课我们还原了草船借箭的三国故事，用克隆造出箭雨、用变量记录得分。今天是我们目前为止最复杂的项目——飞机大战！你要驾驶战机、发射子弹、击落敌机，把所有本领都用上！✈️🔥"

### 第3页 故事导入
- **故事**：警报拉响！🚨 外星星系派来了大量敌机 🛸，它们成群结队地入侵地球领空！小超人驾驶最新型战斗机 ✈️ 紧急起飞迎战。他要用空格键发射子弹 💥 击落敌机，同时还要躲避敌人——敌机太多太快了，一旦被撞到就机毁人亡！小超人能击落多少敌机？地球的命运就交给你了！🌍
- **互动提问**："你玩过飞机大战类游戏吗？你觉得最难的是什么？🤔"
- **画面**：星空战场背景 + 玩家战斗机 + 多架敌机 + 子弹飞行轨迹

### 第4页 功能分析
```
┌─────────────────────────────────┐
│  🎬 运行视频（左侧占位框）       │
├─────────────────────────────────┤
│  背景：🌌 星空/太空背景（需上传） │
│  角色：✈️ 玩家飞机（四方向+射击） │
│         🛸 敌机（克隆+随机出现）  │
│         💥 子弹（克隆+向上发射）  │
│  音效：爆炸音效 🎵               │
│  交互规则：                      │
│  ① 玩家上下左右移动+空格射击     │
│  ② 敌机从顶部随机位置产生        │
│  ③ 敌机向下移动→到底部删除       │
│  ④ 子弹从玩家位置向上移动        │
│  ⑤ 子弹碰敌机→爆炸造型+删除      │
│  ⑥ 敌机碰玩家→玩家爆炸+游戏结束  │
│  ⑦ 开始后恢复所有状态            │
└─────────────────────────────────┘
```

---

## 第二关 · 认识关

### 第5页 认识关标题
- 01 / 认识关 · 飞机大战的新装备
- 四个新本领：素材上传 / 克隆体删除 / 爆炸造型切换 / 随机克隆间隔

### 第6页 新技能 ①：素材上传 📁（首次！）
- 💭 问题：Scratch角色库里没有战斗机、没有敌机、没有太空背景——怎么办？
- 🧩 不是积木，是技能：**从电脑上传素材到Scratch**
- 🛠 操作步骤（上传角色）：
  1. 鼠标移到右下角"选择角色"按钮（小猫+号图标）
  2. 点击 → 弹出菜单
  3. 选择最上方「上传角色」📤
  4. 从电脑文件夹中选择战斗机图片
  5. 角色出现在舞台上！
- 🛠 上传背景同理：
  1. 右下角"选择背景"按钮
  2. →「上传背景」→选择星空图片
- 🤔 Scratch自带 vs 上传素材：
  | 来源 | 优点 | 缺点 |
  |------|------|------|
  | Scratch自带 | 方便，点点就有 | 种类有限 |
  | 上传素材 | 任意图片都可以！ | 需要提前找好图片 |
- 📸 配图：上传角色的操作界面截图 + 上传后角色出现在舞台的效果
- 💡 注意：图片格式支持 png/jpg/svg，png背景透明最好！
- 🔴 这是L1系列**第一次**使用外部素材！之前所有课都用Scratch自带的角色。

### 第7页 新概念 ②：克隆体删除 🗑（核心升级！）
- 💭 回顾：L1-12 打砖块——砖块用「隐藏」→「等待」→「显示」循环
- 🧩 L1-14 草船借箭——开始用「删除此克隆体」
- 🛠 本课核心升级：
  | 处理方式 | L1-12 砖块 | L1-14 箭矢 | L1-15 敌机/子弹 |
  |---------|-----------|-----------|---------------|
  | 克隆体用完 | 隐藏（复活） | 删除此克隆体 | 删除此克隆体 |
  | 为什么 | 砖块要再生 | 箭矢一次性 | 敌机+子弹都一次性 |
- 🔴 不删克隆体会怎样？
  - 舞台上同时存在几百个隐形克隆体
  - 屏幕越来越卡 🐢
  - 最终Scratch崩溃 😱
  - 删掉 = 释放内存 = 游戏流畅！
- 📸 配图：克隆体删除vs隐藏的效果对比图 + 舞台堆满隐形克隆体的警告
- 💡 比喻：隐藏 = 把垃圾塞进沙发底下（表面干净，实际还在）；删除 = 把垃圾扔进垃圾桶清空（彻底干净）。

### 第8页 新概念 ③：爆炸造型切换 💥
- 💭 场景：敌机被子弹击中——不能直接消失！太突然了，玩家不知道打中了没。
- 🧩 **「换成 造型 ▼」** + **「等待 __ 秒」**（外观模块·紫色 + 控制模块·橙色）
- 🛠 爆炸效果三步法：
  1. 敌机碰到子弹 → 不是立刻删除！
  2. 先「换成 爆炸 ▼ 造型」→ 显示爆炸画面
  3. 「等待 0.5 秒」→ 给玩家看到爆炸
  4. 然后「删除此克隆体」
  ```
  如果 碰到 子弹 ▼？那么
    换成 爆炸 ▼ 造型        ← 切换爆炸画面
    播放声音 爆炸 ▼
    等待 0.5 秒             ← 让玩家看到爆炸！
    删除此克隆体
  ```
- 🤔 为什么不能直接删除？
  - 直接消失 = 玩家不知道发生了什么
  - 给0.5秒视觉反馈 = 玩家清楚"我打中了！" 💥
- 📸 配图：飞机正常造型→爆炸造型的切换效果 + 时间线（0s击中→0.5s爆炸→消失）
- 💡 比喻：电影里的大反派被击中不会立刻消失——先给个爆炸特写，观众才过瘾！

### 第9页 新概念 ④：随机克隆间隔 🎲
- 💭 问题：敌机怎么产生？如果一直不停地克隆会怎样？
- 🧩 两个随机的结合：
  ```
  重复执行
    等待 在 1 到 3 之间取随机数 秒         ← 随机等待
    移到 x:在 -220 到 220 之间取随机数 y:170  ← 随机x位置
    克隆 自己
  ```
- 🛠 为什么需要「等待随机时间」？
  - 如果不等 → 每帧都在克隆 → 瞬间几百架敌机 → 卡死
  - 固定等待 → 敌机规律出现 → 太容易预判 → 无聊
  - 随机等待 → 有时候密集有时候稀疏 → 有挑战性！
- 🤔 双随机系统：
  - **时间随机**：1~3秒随机间隔 → 节奏不可预测
  - **位置随机**：x坐标在屏幕宽度内随机 → 方向不可预测
  - 两个随机组合 = 每次游戏体验都不同！
- 📸 配图：敌机不同时间/不同位置出现的示意图 + 随机等待+随机位置组合积木
- 💡 和L1-14箭矢对比：箭矢间隔0.5~2秒（密集），敌机间隔1~3秒（稍慢，但敌机有碰撞体积）

---

## 第三关 · 编程关

### 第10页 编程关标题
- 02 / 编程关 · 六步完成飞机大战！
- 路线图：玩家控制 → 敌机生成 → 子弹发射 → 碰撞爆炸 → 玩家失败 → 音效组

### 第11页 Step 1：玩家飞机四方向移动 ✈️
- STEP 01 · 四方向移动 + 空格射击
- 💭 问题：玩家飞机怎么在屏幕中上下左右飞？
- 🧩 积木拼图：
  ```
  当绿旗被点击
  移到 x:0 y:-120              ← 屏幕中下方
  显示
  重复执行
    如果 按下 上键 ▼？那么
      将y坐标增加 5
    如果 按下 下键 ▼？那么
      将y坐标增加 -5
    如果 按下 左键 ▼？那么
      将x坐标增加 -5
    如果 按下 右键 ▼？那么
      将x坐标增加 5
  ```
- 🎯 要点：
  - 四方向移动（上/下/左/右），L1-9学过！
  - 速度5适中——太快不好控制，太慢躲不开敌机
  - 空格键发射子弹在后续Step处理
- 📸 配图：玩家飞机四方向移动示意 + 完整积木

### 第12页 Step 2：敌机克隆 + 下落 🛸
- STEP 02 · 敌机从顶部随机出现，向下移动
- 💭 问题：敌机怎么出现、怎么移动、怎么消失？
- 🧩 敌机角色脚本（本体）：
  ```
  当绿旗被点击
  隐藏                          ← 本体隐藏
  
  重复执行
    等待 在 1 到 3 之间取随机数 秒
    移到 x:在 -220 到 220 之间取随机数 y:170
    克隆 自己
  ```
- 🧩 克隆体行为：
  ```
  当作为克隆体启动时
  显示
  重复执行
    将y坐标增加 -4             ← 向下移动
    如果 y坐标 < -170 那么      ← 飞到屏幕底
      删除此克隆体              ← 没被击中，飞走了
  ```
- 🎯 要点：
  - 敌机速度4（比玩家慢一点，给反应时间）
  - 到底部删除克隆体（不能只隐藏！）
  - y坐标<-170是判断飞出了屏幕底部
- 📸 配图：敌机从上方出现+下落到底部的轨迹 + 完整积木

### 第13页 Step 3：子弹克隆 + 发射 💥
- STEP 03 · 按空格→从玩家位置发射子弹→向上飞
- 💭 问题：子弹从哪来？飞向哪？什么时候消失？
- 🧩 子弹角色脚本（本体）：
  ```
  当绿旗被点击
  隐藏                          ← 子弹本体也隐藏
  重复执行
    如果 按下 空格键 ▼？那么
      移到 玩家 ▼              ← 移到玩家当前位置
      克隆 自己                 ← 发射！
      等待 0.3 秒               ← 发射间隔（不然太密集）
  ```
- 🧩 克隆体行为：
  ```
  当作为克隆体启动时
  显示
  重复执行
    将y坐标增加 8               ← 快速向上飞
    如果 y坐标 > 170 那么       ← 飞出屏幕顶
      删除此克隆体
  ```
- 🎯 要点：
  - 子弹速度8（比敌机快，追得上）
  - 「移到 玩家 ▼」→ 子弹从玩家位置出发
  - 「等待 0.3 秒」→ 控制发射频率，避免满屏子弹
  - y>170 = 飞出屏幕上方 → 删除
- 📸 配图：子弹从玩家位置向上飞的轨迹 + 完整积木

### 第14页 Step 4：子弹击毁敌机——碰撞爆炸 💥
- STEP 04 · 敌机碰到子弹 → 爆炸 → 消失
- 💭 问题：敌机被子弹打中后怎么处理？
- 🧩 在敌机克隆体脚本中加入碰撞检测：
  ```
  当作为克隆体启动时
  显示
  重复执行
    将y坐标增加 -4
    如果 碰到 子弹 ▼？那么       ← 被击中！
      换成 爆炸 ▼ 造型
      播放声音 爆炸 ▼
      等待 0.5 秒
      删除此克隆体
    如果 y坐标 < -170 那么
      删除此克隆体
  ```
- 🔴 重要：敌机需要有两个造型——正常造型 + 爆炸造型
- 🧩 子弹也要检测碰撞：
  ```
  （在子弹克隆体脚本中）
  重复执行
    将y坐标增加 8
    如果 碰到 敌机 ▼？那么      ← 击中敌机
      删除此克隆体              ← 子弹也消失
    如果 y坐标 > 170 那么
      删除此克隆体
  ```
- 🎯 爆炸三步法：切造型→等0.5秒→删。给视觉反馈！
- 📸 配图：敌机爆炸造型 + 子弹碰到敌机瞬间 + 完整积木

### 第15页 Step 5：玩家被敌机撞到——游戏失败 💀
- STEP 05 · 敌机碰到玩家 → 玩家爆炸 → 游戏结束
- 💭 问题：玩家被敌机撞到了怎么办？
- 🧩 在敌机克隆体脚本中继续加检测：
  ```
  当作为克隆体启动时
  显示
  重复执行
    将y坐标增加 -4
    如果 碰到 子弹 ▼？那么
      换成 爆炸 ▼ 造型
      播放声音 爆炸 ▼
      等待 0.5 秒
      删除此克隆体
    如果 碰到 玩家 ▼？那么       ← 撞到玩家！
      广播 玩家被撞 ▼           ← 通知玩家
      删除此克隆体              ← 敌机也消失
    如果 y坐标 < -170 那么
      删除此克隆体
  ```
- 🧩 玩家角色接收广播：
  ```
  当接收到 玩家被撞 ▼
  换成 爆炸 ▼ 造型             ← 玩家也爆炸
  播放声音 爆炸 ▼
  等待 1 秒
  隐藏
  停止 全部脚本 ▼
  ```
- 🎯 要点：
  - 玩家也需要一个爆炸造型
  - 停止全部脚本 = 游戏结束
  - 第二次玩要恢复显示（绿旗时「显示」+「换成正常造型」）
- 📸 配图：敌机撞到玩家的瞬间 + 玩家爆炸效果 + 完整积木

### 第16页 Step 6：音效 🎵
- STEP 06 · 给游戏加上爆炸音效和背景音
- 💭 问题：怎么让游戏更有沉浸感？
- 🧩 爆炸音效（封装在敌机/玩家脚本中——前面已加入）：
  ```
  播放声音 爆炸 ▼
  ```
- 🧩 背景音乐（可选，放在舞台脚本）：
  ```
  当绿旗被点击
  重复执行
    播放声音 背景音乐 ▼ 直到结束
  ```
- 🎯 音效建议：
  - 爆炸音效：Scratch音效库搜索"explosion"或上传自定义
  - 背景音乐：不要太响，循环播放
  - 也可以用「播放声音 射击 ▼」给子弹发射加音效
- 📸 配图：声音模块中的播放积木 + 音效库搜索界面

### 第17页 整体组装 + 恢复机制 🧩
- 📋 所有角色脚本总览（一页汇总）
- ✈️ 玩家：四方向移动 + 接收「玩家被撞」广播 → 爆炸隐藏
- 🛸 敌机：本体克隆产生 + 克隆体下落 + 碰子弹爆炸 + 碰玩家广播
- 💥 子弹：本体从玩家位置克隆 + 克隆体向上飞 + 碰撞删除
- 🎵 音效：爆炸 + 背景音乐
- 🔄 **恢复机制**（第二次玩）：
  - 绿旗时：玩家「显示」+「换成 正常 ▼ 造型」
  - 敌机/子弹本体都「隐藏」
  - 所有数据状态重新初始化
- 📸 配图：完整游戏截图 + 三角色脚本总览

### 第18页 Bug 急救站 🏥
- 🐛 Bug 1：上传的素材显示不了
  - ❓ 图片格式对吗？（png/jpg/svg）
  - ❓ 文件大小不能太大（建议<500KB）
  - ❓ 上传后角色列表里有吗？
- 🐛 Bug 2：游戏越来越卡
  - ❓ 敌机和子弹克隆体有没有「删除此克隆体」？
  - ❓ 敌机到底部和飞出屏幕顶都要删！
  - ❓ 不能用「隐藏」代替删除！
- 🐛 Bug 3：敌机被击中后不爆炸（直接消失）
  - ❓ 删除前有没有「换成爆炸造型」+「等待0.5秒」？
  - ❓ 造型名称对吗？下拉选的是「爆炸▼」吗？
- 🐛 Bug 4：子弹打不出去
  - ❓ 「当作为克隆体启动时」里有没有「显示」？
  - ❓ 子弹的克隆体是否向上移动（y坐标增加而不是减少）？
  - ❓ 本体是否「隐藏」了（影响发射位置）？
- 🐛 Bug 5：第二次玩玩家不显示
  - ❓ 绿旗脚本有没有「显示」+「换成正常造型」？
  - ❓ 第一次游戏结束后「停止全部脚本」会停掉所有，重新点绿旗应该全部重置
- 🐛 Bug 6：子弹从原位置发射而不是从玩家位置
  - ❓ 克隆之前有没有「移到 玩家 ▼」？
  - ❓ 顺序：先移到玩家 → 再克隆 → 再等待（不能反过来）

---

## 第四关 · 扩展关

### 第19页 扩展关标题
- 03 / 扩展关 · 升级我的飞机大战！

### 第20页 三级挑战 ⭐
- ⭐ **初级**：加得分变量——每击落一架敌机+10分，被撞到-1条命。用「得分」变量 + 「生命值」变量，生命=0→游戏结束
- ⭐⭐ **中级**：多级敌机——普通敌机（速度4）、快速敌机（速度8）、大型敌机（要打3次才爆）
  - 用随机数判断敌机类型 → 不同速度/不同造型/不同血量变量
- ⭐⭐⭐ **高级**：Boss战——每击落20架普通敌机出现一个Boss，Boss血量=10，在屏幕上方来回移动+向下射击
  - Boss击落后有庆祝特效+加分
  - 需要用到L1-9变量做血量计数 + 用广播触发Boss出现
- 🎨 **自由创作**：
  - 设计关卡系统：通关条件（如击落30架）→ 下一关 → 敌机更快更多
  - 玩家获得道具：吃到道具 → 加速/子弹加速/无敌3秒
  - 自制胜利和失败画面（大文字+特效）
  - 自己画玩家飞机和敌机造型（造型编辑器）

---

## 第五关 · 课堂总结

### 第21页 课堂总结标题
- 04 / 课堂总结 · 今天学到了什么

### 第22页 积木与概念全家福
| 积木/概念 | 位置 | 作用 |
|-----------|------|------|
| 📁 上传角色/背景 | 右下角按钮 | 从电脑导入外部素材 |
| 🧬 克隆 自己 | 控制模块（橙色） | 批量产生敌机/子弹 |
| 🧬 当作为克隆体启动时 | 控制模块（橙色） | 克隆体的自动脚本 |
| 🗑 删除此克隆体 | 控制模块（橙色） | 彻底删除克隆体（防卡顿） |
| 🎲 在x和y之间取随机数 | 运算模块（绿色） | 随机位置/时间 |
| 🎯 碰到角色？ | 侦测模块（浅蓝色） | 检测碰撞 |
| 💥 换成造型 | 外观模块（紫色） | 切换爆炸造型 |
| ⏳ 等待 __ 秒 | 控制模块（橙色） | 爆炸后暂停给视觉反馈 |
| 📡 广播 / 当接收到 | 事件模块（黄色） | 通知玩家被撞 |
| 🛑 停止 全部脚本 | 控制模块（橙色） | 游戏结束 |
| 🎵 播放声音 | 声音模块（紫色） | 爆炸音效/背景音乐 |

### 第23页 随堂测验 ✍
- Q1：为什么要用「删除此克隆体」而不能用「隐藏」？（提示：想想屏幕卡顿的原因）
- Q2：敌机被子弹击中后，正确的处理顺序是什么？
  A. 直接删除 B. 换造型→等0.5秒→删除 C. 隐藏→等待→显示
- Q3：敌机出现为什么用随机等待时间？固定时间会有什么问题？
- Q4：玩家被撞后，怎么通知玩家角色爆炸？（用哪个积木？）
- Q5：飞机大战中，玩家的四方向移动和草船借箭中的移动方式一样吗？区别是什么？

---

## 第六关 · 展示关

### 第24页 展示关标题
- 05 / 展示关 · 向爸爸妈妈展示！

### 第25页 展示脚本（填空式）
```
🎤 大家好！今天我完成了一个超刺激的射击游戏——

我做了「__________」
玩家用「__________」键上下左右移动
用「__________」键发射子弹
敌机通过「__________」产生
子弹碰到敌机后会「__________」→等待→「__________」
敌机碰到玩家后会「__________」+「__________」

这节课我第一次使用了「__________」功能上传外部素材
我新学到了「__________」积木
它的作用是「__________」

这个游戏用到了很多之前学过的技能：
从L1-9的「__________」（四方向移动）
从L1-12的「__________」（克隆批量产生）
从L1-14的「__________」（删除克隆体防卡顿）

谢谢大家！✈️💥
```

### 第26页 下课啦 🎉
- 巨大文字：**下课啦！** 🎊
- 鼓励泡泡：
  - 💬 "飞机大战是你目前为止最复杂、最完整的游戏作品！🏆"
  - 💬 "你集成了四方向移动+双克隆系统+多角色碰撞+爆炸特效——这是真正的游戏开发！"
  - 💬 "从L1-1到L1-15，你已经从零基础成长为能独立开发游戏的Scratch小达人！"
  - 💬 "下节课精彩继续——黄金矿工！⛏️💰"
- 品牌条：L1-15 · 飞机大战 ✈️