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

事件与事件处理

Events & Handling

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

什么是事件 (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 Event)

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

事件类型:"hear"

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

#54 去拿过来 (Spawn & Fetch)

事件类型: "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 漫漫长路 (Cooperation)

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

// 宠物线程:负责捡东西 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 森林慢跑 (Independent)

宠物也可以自己移动!

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 绑定不能忘!"

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

🏆