游戏开发 2
第 13-14 关
🌲

游戏事件:destroy

消除魔法与开路

💥 击败 (Defeat)
✨ 销毁 (Destroy)
🧩

世界由“对象”组成

游戏里的每个东西都是对象 (Object)

  • 🤠 player:主角
  • 🏭 munchkinSpawner:造怪机器
  • 🌲 passageForest1:挡路的树
# 对象有属性(.)和方法(.)
hero.health # 属性
forest.destroy() # 方法
📦

Object

属性 方法
🆚

两种“消灭”方式

1. .defeat() (击败)
像被打晕了,还在场景里,只是血量归零。
适用:敌人、生成器
2. .destroy() (销毁)
魔法橡皮擦!直接从世界上彻底消失。
适用:墙壁、树木、障碍物
👾
点击 Defeat
🌳
点击 Destroy
🔔

触发时机:defeat 事件

我们需要一个监听器:当敌人倒下时,执行操作。

def onDefeat(event):
  game.defeated += 1
  # 检查是否达到目标...

game.setActionFor("munchkin", "defeat", onDefeat)

game.defeated 是一个计数器,记录打倒了多少怪。

💀
触发事件
onDefeat()
计数 +1
game.defeated += 1
🔑

开门的钥匙:if 条件

根据打倒的怪物数量,触发不同的机关。

if game.defeated == 3:
  # 第一阶段:开第一道门
  spawner1.defeat()
  forest1.destroy()

== 是判断相等。
当刚好打倒 3 只时,炸掉生成器,清除森林。

3
➡️
💥
🌳
🎮

实战模拟:打怪开路

点击出现的怪物来击败它们。
观察计数器和路障的变化。

  • 击败 3 只:第一棵树消失。
  • 击败 6 只:第二棵树消失。
Defeated: 0
Tree 1
Tree 2
🏭
📋

逻辑对比表

方法 效果 就像...
defeat() 血量为0,还在原地 打晕了
destroy() 彻底移除,消失 橡皮擦擦掉
🥊 vs ✏️
🎓

通关口诀

想统计打怪:game.defeated += 1
达到数量时:if defeated == 3
生成器打坏用 defeat()
挡路树移除用 destroy()
🌟