CodeCombat 时间魔法

Python 游戏循环与计时器

LEVEL 6

冒险时刻 (Adventure Time)

时间控制台

指挥官,我们需要源源不断的敌人来训练士兵!如果只写一次 spawnXY,敌人打完就没了。如果写一万行 spawnXY,手指会断掉的!
我们需要一台“自动刷怪机”

核心逻辑:设定闹钟

想象你有一个闹钟,我们叫它 spawnTime(生成时间)。
游戏里还有一个一直走的挂钟,叫 game.time

  • 第一步:闹钟设在 0秒。
  • 第二步:一直看表(while True)。如果 挂钟时间 > 闹钟时间...
  • 第三步:叮铃铃!生成一个怪兽!
  • 第四步(最重要):把闹钟拨到 2秒 以后!
12
6

game.time += 1s

Next: +2s
loop_spawner.py
1
# game.time是游戏经过的时间
2
game.spawnPlayerXY("guardian", 10, 35)
生成玩家英雄
3
game.addSurviveGoal()
目标:存活
4
game.addDefeatGoal(5)
目标:击败5个敌人
5
6
def onSpawn(event):
定义怪物的AI逻辑
7
while True:
怪物出生后进入无限循环
8
unit = event.target
获取当前的怪物单位
9
enemy = unit.findNearestEnemy()
寻找玩家
10
if enemy:
如果找到玩家
11
unit.attack(enemy)
发起攻击
12
13
game.setActionFor("munchkin", "spawn", onSpawn)
所有munchkin出生即执行攻击逻辑
14
15
# game.time从0开始,并以秒为单位自动更新
16
spawnTime = 0
初始化闹钟:现在(0秒)就响
17
while True:
游戏主循环(时刻监控时间)
18
# spawnTime是生成单位的时间。
19
if game.time > spawnTime:
判断:挂钟时间是否超过了闹钟时间?
20
# 在60, 35处生成一个"munchkin"
21
game.spawnXY("munchkin", 60, 35)
到时间了!生成敌人!
22
# 使用spawnTime = game.time + 2 设置 敌人每2秒生成一次
23
# #
24
spawnTime = game.time + 2
重设闹钟:定在当前时间的2秒后
教官提示: game.time 是不可修改的,它自己会走。但 spawnTime 是我们自己定义的变量,我们可以随意修改它来决定下一次生成是什么时候。