💻 计算机科学 2
第 49-62 关
🐶

事件与事件处理

Events & Handling

👂 监听 (Listen)
⚡ 反应 (React)

本节课关卡 · 1/2

扣哒世界 · 计算机科学2 · C++ · 第49–62关

C++ · 本节课关卡

49 · 边地好伙伴

先读关卡目标,观察地图,再运用本课知识。

50 · 好伙伴的名字

先读关卡目标,观察地图,再运用本课知识。

51 · 博士猫咪

先读关卡目标,观察地图,再运用本课知识。

52 · 宠物小测试

先读关卡目标,观察地图,再运用本课知识。

53 · 概念挑战. 适时之言

先读关卡目标,观察地图,再运用本课知识。

54 · 去拿过来

先读关卡目标,观察地图,再运用本课知识。

55 · 看门狗

先读关卡目标,观察地图,再运用本课知识。

56 · 漫漫长路

先读关卡目标,观察地图,再运用本课知识。

57 · 概念挑战. 坚韧的诱饵

先读关卡目标,观察地图,再运用本课知识。

学习路线:读目标 → 看图解 → 写代码 → 运行检查

本节课关卡 · 2/2

扣哒世界 · 计算机科学2 · C++ · 第49–62关

C++ · 本节课关卡

58 · 森林慢跑

先读关卡目标,观察地图,再运用本课知识。

59 · 森林加农炮之舞

先读关卡目标,观察地图,再运用本课知识。

60 · 概念挑战. 锋利的诱饵

先读关卡目标,观察地图,再运用本课知识。

61 · 组合挑战. 充满事件的争论

先读关卡目标,观察地图,再运用本课知识。

62 · 力量的顶峰

先读关卡目标,观察地图,再运用本课知识。

学习路线:读目标 → 看图解 → 写代码 → 运行检查

🔔

什么是事件 (Event)?

想象你的宠物有一个魔法耳朵,当特定事情发生时,它就会自动做出反应!

  • 🎵 听到声音 ("hear")
    → 耳朵竖起 → 宠物说话
  • 🐣 宠物出现 ("spawn")
    → 耳朵竖起 → 开始工作
"事件就像门铃,处理函数就像去开门。
门铃响(事件发生)→ 自动执行函数(去开门)!"
叮咚!
🐶
点击按钮按门铃
📝

C++ 事件语法

要让宠物对事件做出反应,我们需要使用 pet.on。

// 1. 定义反应函数 (处理器) auto onHear(auto event) { pet.say("汪汪!"); } int main() { // 2. 注册事件:当 "hear" 发生时,执行 onHear // 注意:onHear 后面没有括号 () pet.on("hear", onHear); // 3. 触发事件 hero.say("你好!"); return 0; }
1. 事件 (hear)
⬇️ 绑定 (pet.on) ⬇️
连接线
⬇️ 触发 ⬇️
2. 函数 (onHear)
🗣️

第49关 · 边地好伙伴

任务: 训练宠物在听到你说话时回应。

事件类型:"hear"

auto speak(auto event) { pet.say("喵~"); } int main() { // 告诉宠物:听到声音 -> 运行 speak pet.on("hear", speak); hero.say("你好小猫"); return 0; }
🤠 🔊 🐱
🦴

第54关 · 去拿过来

事件类型: "spawn" (出生/生成)

这个事件只在关卡开始、宠物出现时触发一次。通常用于启动一个无限循环的任务(比如捡东西)。

auto goFetch(auto event) { while(true) { auto item = hero.findNearestItem(); if(item) { pet.fetch(item); } } } int main() { // 宠物一出现,就开始去捡东西 pet.on("spawn", goFetch); return 0; }
✨🐕✨

Spawn = 登场!

🔀

并行工作 (Parallel)

这是事件处理最强大的地方:多任务处理!

英雄和宠物可以各干各的,互不干扰。

  • ⚔️ 英雄 (main): 专心打怪或移动。
  • 🦴 宠物 (handler): 自动捡东西或巡逻。
英雄 (Main)
🤠 打怪!
宠物 (Event)
🐶 捡钱!
🤝

第56关 · 漫漫长路

英雄只管跑路,宠物负责后勤(捡药水)。

// 宠物线程:负责捡东西 auto onSpawn(auto event){ while(true) { auto item = hero.findNearestItem(); if(item) { pet.fetch(item); } } } // 主线程:英雄移动 int main() { pet.on("spawn", onSpawn); hero.moveXY(78, 35); // 英雄只管走 return 0; }
🏃‍♂️💨 🐕💊
🌲

第58关 · 森林慢跑

宠物也可以自己移动!

在 onSpawn 中使用 pet.moveXY(),宠物就会自己去巡逻,而英雄在旁边喊加油。

auto onSpawn(auto event) { while(true) { pet.moveXY(9, 24); pet.moveXY(30, 43); // ... 宠物跑圈圈 } } int main() { pet.on("spawn", onSpawn); while(true) { hero.say("跑跑跑!"); // 英雄喊话 } return 0; }
🐕 🔄
🎓

训练师结业口诀

"hear 是听到,spawn 是登场,
pet.on 绑定不能忘!"

"各干各的效率高,
英雄宠物互不扰!"

🏆

我的知识宝藏 · 一页复习

扣哒世界 · 计算机科学2 · C++ · 第49–62关

C++ · 知识点图
关键字方法 / 函数字符串数字

什么是事件?

想象你的宠物有一个魔法耳朵,当特定事情发生时,它就会自动做出反应!

C++ 事件语法

要让宠物对事件做出反应,我们需要使用 pet.on。

pet.say("汪汪!");

第49关 · 边地好伙伴

任务: 训练宠物在听到你说话时回应。

pet.say("喵~");

第54关 · 去拿过来

事件类型: "spawn" (出生/生成)

auto item = hero.findNearestItem();

并行工作

这是事件处理最强大的地方:多任务处理!

第56关 · 漫漫长路

英雄只管跑路,宠物负责后勤(捡药水)。

auto item = hero.findNearestItem();

第58关 · 森林慢跑

宠物也可以自己移动!

pet.moveXY(9, 24);

本节课关卡:49. 边地好伙伴;50. 好伙伴的名字;51. 博士猫咪;52. 宠物小测试;53. 概念挑战. 适时之言;54. 去拿过来;55. 看门狗;56. 漫漫长路;57. 概念挑战. 坚韧的诱饵;58. 森林慢跑;59. 森林加农炮之舞;60. 概念挑战. 锋利的诱饵;61. 组合挑战. 充满事件的争论;62. 力量的顶峰