游戏开发 2 第 19-20 关
🕒 GAME TIME: 0.0
🌐

游戏事件综合应用

Game Events Synthesis

💎 宝物管理
♻️ 资源回收
🗺️

什么是“综合应用”?

这一关我们要把之前学的本事都串起来,管理整个游戏的生态系统:

  • 🐣 出生 (Spawn):给宝物贴上“有效期”。
  • 🎒 收集 (Collect):捡东西加分。
  • ⚔️ 击败 (Defeat):打怪并清理战场。
  • ♻️ 销毁 (Destroy):过期或死掉的东西,彻底移除。
"就像管理员:安排东西何时出现、能活多久、死后去哪。"
🐣 ➡️ 🎒 ➡️ ♻️
完整的生命周期

带“寿命”的宝物:Time Stamp

宝物不是永远存在的,我们要给它贴个“过期时间标签”。

def spawnValuable(type, lifetime):
  item = game.spawnXY(type, x, y)
  # 设定销毁时间 = 当前时间 + 寿命
  item.destroyTime = game.time + lifetime

item.destroyTime:这是一个自定义属性,记下它该消失的时间点。

🪙
Time: 3s
🗑️

onSpawn:监控有效期

宝物一出生,就开始倒计时检查。

def onSpawn(event):
  item = event.target
  while True:
    # 检查:如果当前时间 > 销毁时间
    if game.time > item.destroyTime:
      item.destroy() # 消失!
destroy() 会把对象从场景中移除,节省电脑资源。
While 循环检查
⬇️ 过期了吗?
Yes -> destroy()
⬇️
💨 消失
🏹

清理尸体:提升性能

在防守战中,怪很多。如果尸体一直堆在地上,电脑会变卡。

def onDefeat(event):
  unit = event.target
  game.defeated += 1
  unit.destroy() # 彻底清除!

逻辑: 打败(defeat) → 计数 → 销毁(destroy)。
这叫 资源管理 (Resource Management)

♻️
👾
🌊

全局计时器:怪物波次

怎么控制一波一波刷怪?用 spawnTime

if game.time > game.spawnTime:
  spawnWave() # 刷一波
  # 闹钟往后调 3 秒
  game.spawnTime += 3

就像海浪一样,每隔一段时间来一波。

Wave1
Wave2
Wave3
💾

保存记录:DB 数据库

想记住最高分?用数据库。

# 读档
top = db.get("topScore")

# 存档 (如果破纪录)
db.set("topScore", currentScore)

这样即使关掉游戏再打开,最高分还在!

👑 TOP SCORE
9999
🏆

生态管理员口诀

"spawn 贴标签 (destroyTime),
collect 捡宝物 (score)。"
"defeat 记击杀 (count),
destroy 清垃圾 (clean)!"
🏅