🎮 游戏开发 2
第 1-2 关
🎬

事件处理机制

Events & Handlers

🔔 事件触发
📝 剧本执行
🔔

什么是"事件" (Event)?

事件就是游戏世界里"发生了一件事"。

  • 🐣 spawn (出生):小演员登场了!
  • ☠️ death (死亡):角色倒下了。
"spawn事件就像舞台上的聚光灯亮起,演员正式上场的那一刻!"
📜

事件处理器 (Event Handler)

事件处理器就是"当事件发生时,要做什么"的那段代码。

就像是:
🔔 事件: 上课铃响了
🏃 处理器: 同学们跑进教室

soldier.on("spawn", soldierLogic)
# 当 soldier 出生时,
# 自动执行 soldierLogic 函数
🔔 ➡️ 🏃
事件 ➡️ 触发行动
🤖

专属剧本: soldierLogic

我们要定义一个函数,专门告诉这个士兵该干嘛。

def soldierLogic():
  while True:
    enemy = soldier.findNearestEnemy()
    if enemy:
      soldier.attack(enemy)
    else:
      soldier.moveXY(42, 48)

这就是士兵的"行动说明书"

👮‍♂️
📄
🎭

通用剧本: fightEnemies

如果有很多单位,我们用通用剧本

def fightEnemies(event):
  # event.target 是触发事件的"主角"
  friendUnit = event.target
  ...
  friendUnit.attack(enemy)
就像老师点名:"不管点到谁(target),谁就回答问题!"
👮‍♂️ 🏹 🧙‍♂️
⬆️
event.target
指向谁,谁就是主角
📣

批量控制: setActionFor

导演发话了:"所有弓箭手,都按这个剧本演!"

game.setActionFor("archer", "spawn", fightEnemies)
  • Type: "archer" (那类人)
  • Event: "spawn" (什么时候)
  • Handler: fightEnemies (做什么)
🎬
🏹
🏹
🏹
🧩

对象(Object) 与 方法(Method)

对象是游戏里的角色(soldier, game)。
方法是他们会的技能。

soldier.attack(enemy) # 攻击技能
soldier.moveXY(42, 48) # 移动技能

记住那个小圆点 . :表示"让谁去做什么"。

🪪 角色卡: Soldier
🔹 技能: attack()
🔹 技能: moveXY()
🔹 技能: findEnemy()
🔁

坐标 & 循环

坐标 (x, y):地图上的位置。
(0, 0) 在左下角,X向右变大,Y向上变大。

while True::永不停歇的循环。
只要游戏没结束,就一直干活!

(42, 48)
(0,0)
🏆

导演的总结

单个控制: soldier.on(...)
就像给一个学生开小灶。
批量控制: game.setActionFor(...)
就像给全班同学发课表。

学会这两个,你就能指挥千军万马啦!

🌟