游戏开发 2 第 6 关
GAME TIME:
0.0
⏱️

游戏管理:计时器

Game Management: Timer

🕒 游戏时间
⏰ 定时生成
⏱️

game.time:游戏里的秒表

game 想象成游戏管理员老爷爷。

他手里拿着一个秒表,这个秒表上的时间就是 game.time

  • ▶️ 游戏一开始,从 0秒 开始。
  • 🔄 它会自动变大:0.1, 1, 2, 3... (单位是秒)
"不需要你自己去数数,游戏会自动帮你计时!"
game.time
🎯

布置任务:游戏目标

管理员还会布置任务:

game.spawnPlayerXY("guardian", 10, 35)
game.addSurviveGoal() # 活下去!
game.addDefeatGoal(5) # 打败5个!

spawnPlayerXY: 在坐标 (10, 35) 生成玩家。
Survive: 生存目标。
Defeat: 击败目标 (参数 5 表示数量)。

👨‍🏫
任务清单:
1. 🛡️ 活下去
2. ⚔️ x 5
🤖

自动战斗 (复习 SOP)

让所有敌人一出生就自带战斗逻辑:

def onSpawn(event):
  while True:
    unit = event.target
    enemy = unit.findNearestEnemy()
    if enemy:
      unit.attack(enemy)

game.setActionFor("munchkin", "spawn", onSpawn)

"所有 munchkin 出生时,自动执行 onSpawn 战斗规程。"

👾👾👾
自带战斗AI

主角登场:计时器逻辑

我们需要一个变量来记录“下一次闹钟响的时间”

spawnTime = 0 # 1. 设定初次闹钟

while True:
  # 2. 检查时间到了没?
  if game.time > spawnTime:
    game.spawnXY("munchkin", 60, 35)
    # 3. 重设闹钟 (关键!)
    spawnTime = game.time + 2
🐇 > 🚩

game.time (兔子) 跑过
spawnTime (旗子) 时
触发事件!

📏

数学小知识:不等式

if game.time > spawnTime:

这是一个数学不等式。想象一条时间轴:

  • 🐇 game.time:一直往右跑的小兔子。
  • 🚩 spawnTime:一个固定的路标。
"当小兔子跑过了路标 ( > ),就可以放怪了!"
🐇
🚩
0s
spawnTime

核心句子:重设闹钟

spawnTime = game.time + 2

这句话的意思是:

  1. 获取当前时间 (game.time)。
  2. 往后推 2秒 (+ 2)。
  3. 把结果存入 spawnTime

结果:每隔 2 秒生成一次!

2s
➡️
⚙️

模拟运行效果

看看代码是如何工作的:

  • ⏱️ 0.1秒:spawnTime是0,条件成立 -> 生成怪 -> spawnTime变2.1。
  • ⏱️ 1.0秒:1.0 不大于 2.1,跳过。
  • ⏱️ 2.2秒:2.2 大于 2.1,条件成立 -> 生成怪 -> spawnTime变4.2。
game.time: 0.0
📐

计时器万能模板

以后想做“每隔 X 秒做某事”,就套用这个模板:

nextTime = 0 # 1. 初始时间

while True:
  if game.time > nextTime:
    # 2. 做你想做的事
    doSomething()
    # 3. 更新时间
    nextTime = game.time + 间隔
nextTime = 0
⬇️
time > nextTime ?
⬇️ Yes
做事 + 更新时间
🔄 循环
🎓

计时器口诀

game.time 秒表走,
spawnTime 闹钟守。
秒表超过闹钟时,
干完活把闹钟调!
🏆