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

事件与事件处理

Events & Event Handling

👂 监听
⚡ 反应
🔔

什么是事件 (Event)?

想象你的宠物有一个魔法耳朵,当特定事情发生时,耳朵就会竖起来!

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

事件处理三要素

想要处理事件,必须凑齐这三样:

  1. 事件 (Event):发生了什么?
    (例如:"hear" 听到)
  2. 处理函数 (Handler):怎么反应?
    (定义一个函数来做事)
  3. 注册 (Registration):建立联系!
    (告诉宠物:听到 -> 就做这个)
1. 事件 (hear)
⬇️ 连接 ⬇️
3. pet.on(...)
⬇️ 触发 ⬇️
2. 函数 (onHear)
🗣️

程序 I:会说话的宠物

# 1. 定义反应:怎么做?
def onHear(event):
  pet.say("Of course!")

# 2. 注册事件:建立联系
pet.on("hear", onHear)

当宠物听到任何声音("hear"事件),它就会自动运行 onHear 函数。

🗣️ 〰️ 👂
Hero: "能帮我吗?"
Pet: "Of course!"
🦴

程序 II:自动捡物品

如果在处理函数里写了 while True,宠物就会一直做这件事!

def onSpawn(event):
  while True:
    item = hero.findNearestItem()
    if item:
      pet.fetch(item)

pet.on("spawn", onSpawn)
"spawn" = 出生/出现。宠物一出现就开始无限循环捡东西。
🏃‍♂️ 🎒
🔀

并行工作 (Asynchronous)

这是事件处理最厉害的地方:多任务处理!

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

  • ⚔️ 英雄: 专心打怪 (主循环)
  • 🦴 宠物: 自动捡东西 (事件触发)
英雄
🤠 打怪!
宠物
🐶 捡钱!
🤖

程序 III:全自动智能

def onSpawn(e): # 任务1: 捡东西
  while True: ...

def onHear(e): # 任务2: 回话
  pet.say("汪汪!")

pet.on("spawn", onSpawn)
pet.on("hear", onHear)

while True: # 任务3: 英雄打怪
  hero.attack(enemy)
🦴 捡东西...
🗣️ 随时回话
⚔️ 英雄一直在战斗
🌍

生活中的事件

你的大脑每天都在处理事件:

我.监听("电话响", 接电话)
我.监听("水开了", 关火)
我.监听("肚子饿", 吃饭)

你不需要一直盯着电话看(那是循环),你只需要在电话响的时候去接(这是事件)。

📱 🍲 🍔
🎓

训练师结业口诀

"事件是发生了什么,
处理函数是做什么反应,
注册是建立联系!"

"多任务并行,
英雄宠物互不干扰!"

🏆