竞技场:苔原塔 ❄️🏰

Tundra Tower Arena —— 守护基地,比对手活得更久!
CodeCombat 多人竞技场 | 塔防 + 特殊技能 + 古代守卫

1. 竞技场总览

Overview of the Tundra Tower Arena

1.1 玩法目标(The Goal)

欢迎来到冰天雪地的苔原塔竞技场!这不是普通的闯关,而是一场双人对抗的塔防大战。你和你的对手各自镇守一座基地,面对源源不断从裂隙(The Rift)涌出的怪物大军(Horde)。

你的任务只有一句话:比你的对手存活更久。怪物会同时进攻你和对手的基地,谁的基地先被攻破,谁就输了。你需要综合运用三大武器系统来撑到最后一刻:

1.2 赛前准备(Prepare)

苔原塔是一个挑战级别(Challenge Level)的竞技场——它在玩法上比基础关卡复杂得多。如果你还没玩过前一个竞技场,强烈建议先去玩一下冰封竞速(Iron and Ice Arena)来热身,熟悉建塔和资源管理的基本套路。

热身建议:苔原塔在「冰封竞速」的玩法基础上做了进化——把怪物限制为精英怪物,并赠送给你两名可操控的雪人守卫(yeti champions)。先打通冰封竞速,会让你上手苔原塔事半功倍。

1.3 胜负条件(Win & Lose)

基地之心
图1:基地之心(Heart)——它被摧毁,你就出局了!

场地中央有一颗属于你的心脏(Heart),也就是你的基地

核心规则:如果你的心脏(基地)被怪物摧毁,你立刻就输了。所以一切防御手段,最终都是为了守住这颗心脏。

由于双方面对的是同样的怪物波次,比的就是谁的防御体系更稳、谁能让基地撑得更久。这是一场耐久度的较量

2. 法力系统

Mana —— Your Main Resource

2.1 法力的作用(What Mana Does)

法力(Mana)是你在苔原塔里最重要、也是唯一的"货币"资源。它就像塔防游戏里的金币——你需要花费法力来建造新塔,或者升级已有的塔。没有法力,你就什么也建不了。

你可以随时用 hero.mana 查看当前的法力值:

# 查看当前法力值
myMana = hero.mana
关键数字:法力的上限是 100。法力满了之后再积攒也不会超过 100,溢出的部分会直接作废。所以不要让法力"溢出"浪费掉——接近上限时务必立即花出去!

2.2 法力的获取(How to Gain Mana)

法力有两个来源,理解它们能帮你规划经济节奏:

来源说明
每秒自动恢复每一秒你都会自动获得一定量的法力(稳定的基本收入)。
击败怪物奖励每消灭一个怪物,都会额外奖励法力——怪物越强,奖励越多,杀得越多越有钱!
经济小提示:稳定收入 + 击杀奖励形成了一个正循环:早期建好塔多杀怪 → 获得更多法力 → 建更多更高级的塔。开局把第一笔法力花在对的位置上,至关重要!

3. 领土与建造

Territory and Building

3.1 建造规则(Where You Can Build)

领土与建造点
图2:场地上有预定义点(A–I)和你方颜色的格子可供建造

你不能在地图上随便乱建。建造受到以下规则限制:

建造之前,可以用 hero.canBuildAt(x, y) 判断某个位置是否可以建造,避免浪费法力。

3.2 建造方式(Two Ways to Build)

建塔的核心命令是 hero.build,它有两种用法:用预定义点的名字,或者用坐标

# 先判断该位置是否可以建造
hero.canBuildAt(x, y)

# 方式一:用预定义点的名字("A" 到 "I")建造
hero.build('archer', 'A')

# 方式二:用坐标 (x, y) 建造,塔出现在格子中心
hero.build('mage', 15, 40)

第一个参数永远是塔的类型字符串(如 'archer''mage'),后面跟着位置信息。

3.3 升级与替换(Upgrade & Replace)

当你在已经有自己塔的格子上再次执行 build 时,会发生有趣的事情:

情况结果
新建类型与原塔相同现有的塔被升级(等级 +1,威力更强)。
新建类型与原塔不同旧塔被替换成新塔,并且新塔会保留之前的等级出现(法力不浪费)。
建造口诀:同种再建 = 升级;异种再建 = 换塔且保留等级。两种操作都消耗法力,要算好账!

3.4 坐标镜像(Coordinate Mirroring)

非常重要:当你通过评级阶梯(rating ladder)蓝队身份对战时,x 坐标会被自动镜像。这意味着你不需要为蓝队单独写代码——你用红队视角写的逻辑,系统会帮你自动翻转到蓝队那一侧。

这是个非常贴心的设计:你只管按一种视角思考和编程,比赛时无论你被分到哪一队,代码都能正常工作。

4. 四种防御塔

Towers —— Your Main Defense

塔是你保卫基地的主力。你可以点击界面上的提示按钮查阅塔的参数,也可以用代码动态获取:

# 获取所有可用塔类型的列表
hero.availableTowerTypes

# 获取某一种塔的详细参数
hero.getTowerParameters('archer')

4.1 通用规则与伤害公式(Cost & Damage Formula)

每座塔的建造(或升级)成本都是 25 法力。塔的攻击伤害会随等级提升,遵循这个公式:

# 等级越高,伤害越高(向上取整)
伤害 = ROUND(BASE_DAMAGE * (1 + LOG(1.55, LEVEL)))

简单理解:BASE_DAMAGE 是这座塔的基础伤害,等级 LEVEL 越高,伤害增长越多。所以把一座塔升到高级,往往比铺一堆 1 级塔更划算。

4.2 弓箭手塔(Archer)

弓箭手塔
🏹 弓箭手塔 archer
射速最快、基石火力的塔(The fast weak tower)
参数数值
类型 type"archer"
攻击冷却 cooldown0.5(出手最快)
攻击伤害 damage12
攻击范围 range22
能否对空可对空
升级加成每升一级,攻击范围 +1

弓箭手塔出手频率高、性价比不错,是早期清理大量弱小地面怪(如 munchkin)的好帮手,也是你防线的基石火力。

4.3 法师塔(Mage)

法师塔
🔮 法师塔 mage
带穿透攻击的防空塔(Anti-aircraft with piercing attack)
参数数值
类型 type"mage"
攻击冷却 cooldown1
攻击伤害 damage7
攻击范围 range30(射程最远!)
能否对空可对空(防空主力)
升级加成每升一级,攻击范围 +1
关键特性:法师塔是天空克星,对飞行怪物造成 4 倍伤害!面对 orb、bird、rider 这类空中单位,法师塔是你的核心防空武器。它还有穿透攻击,能命中一条线上的多个敌人,射程也最远(30)。

4.4 加农炮塔(Cannon)

加农炮塔
💣 加农炮塔 cannon
慢速但带 AOE 范围伤害的塔(Slow tower with AOE damage)
参数数值
类型 type"cannon"
攻击冷却 cooldown1.5(较慢)
攻击伤害 damage15(单发最高)
攻击范围 range20
爆炸半径 blast radius10
能否对空不能对空
升级加成每升一级,爆炸范围 +0.5
注意:加农炮无法攻击飞行怪物——飞行怪会直接无视炮击!它的强项是用范围爆炸一次性炸掉扎堆的地面怪。配合特殊技能把怪物聚成一团再开炮,效果拔群。

4.5 冰霜塔(Frost)

冰霜塔
❄️ 冰霜塔 frost
对周围怪物造成伤害并减速的辅助核心塔(Damage & slow down)
参数数值
类型 type"frost"
攻击冷却 cooldown2(最慢)
攻击伤害 damage5(最低)
攻击范围 range12(最短)
爆炸半径 blast radius10
减速持续时间 slow duration2 秒
减速系数 slow factor0.5(速度减半)
能否对空可对空
升级加成每升一级,减速系数 −0.0125(减速更强)

冰霜塔的价值不在伤害,而在控制。它能把周围的怪物大幅减速(系数越低,怪物越慢),为你的其他塔争取更多输出时间。把冰霜塔布在怪物必经的咽喉要道,能极大延缓敌人推进,是辅助核心。

塔的搭配思路:弓箭手清杂兵、法师专打飞行、加农炮炸成堆的地面怪、冰霜塔减速控场——四种塔各司其职,组合起来才是稳固的防线。切记:防线里必须有对空塔(弓箭或法师),否则飞行怪会长驱直入!

5. 特殊技能

Special Abilities —— Bend the Battlefield

5.1 四种特殊技能(Four Special Abilities)

除了建塔,你还能用 hero.special('技能名', x, y) 在指定坐标释放特殊技能(Special Abilities),制造引力效果,直接操控怪物和空间。共有四种:

图标技能名效果
拉力"pull" 拉力制造一个引力井,把怪物向内吸聚(聚怪)。与加农炮绝配
推力"push" 推力制造引力效果,把怪物持续向外推开(驱散/阻挡)。
爆发"burst" 爆发短促而强力的"推"——瞬间把怪物炸飞得很远,是保命神技
传送"teleport" 传送把怪物传送到对手基地的方向——把麻烦丢给对面!
# 在坐标 (40, 40) 制造一个引力井,把怪物聚成一团
hero.special('pull', 40, 40)

# 在某处爆发,把逼近基地的怪物炸飞
hero.special('burst', 30, 25)

5.2 技能参数与冷却(Parameters & Cooldown)

好消息:special 技能完全不消耗法力,是独立冷却的"免费王牌"!但每种技能都有冷却时间,不能无限连发。释放时通用施法时间均为 0.4 秒(英雄会被短暂锁定)。

这里有两个容易混淆的冷却概念,务必分清:

技能力量 force范围 range持续 durationcooldownspecificCooldown其他
"push"-30002030.45
"pull"30002030.45
"burst"-100000200.20.43力量极强、极短,冷却最快
"teleport"120.44传送距离 60,眩晕 0.3 秒

5.3 经典连招推荐(Combos)

连招操作
🕸️ 天罗地网"pull" 把怪物吸聚成团,再用加农炮范围轰炸,一锅端。
🌊 潮汐连环"pull" 吸聚后立刻接 "push",让怪物在你的火力网中来回挨打。
🔮 乾坤挪移针对高血量精英怪,用 "teleport" 直接把它送回起点,让它重走一遍。
🛡️ 保命爆发怪物逼近基地时,用 "burst" 瞬间把它们炸飞,争取喘息时间。
实战技巧:四种技能各自独立冷却、又不耗法力,要勤用、轮转着用。社区高手还有更花的招数——把怪物 "burst" / "push" 推进你方一侧的能量屏障里造成额外伤害,甚至在对手那一侧用 "pull",把怪物引向对方的水晶基地!

6. 古代守卫

Guards —— Ancient Guardians of the Tundra

苔原的古代守护者前来助阵——你可以直接操控两名守卫。它们能移动、攻击、使用特殊能力,还能侦察怪物的信息。它们是你区别于纯塔防的"机动部队"。

6.1 守卫特性(Guard Traits)

古代守卫
图3:两名雪人守卫可被你的代码直接操控,死亡后会重生
特性说明
免疫技能守卫无视所有特殊技能——你的 pull/push 不会影响自己人。
生命恢复每秒恢复 15 点生命值,很耐打。
死亡重生若阵亡,10 秒后在原地重生。
对基地伤害低守卫对敌方基地只造成 0.25 倍伤害(它们是防守者,不是攻城者)。
抗远程守卫受到远程怪物的伤害只有 0.5 倍。

6.2 守卫控制(Controlling Guards)

控制守卫的方式和建塔不同——你要写一个事件处理函数,它会在每次守卫生成时被自动调用。这个函数接收一个参数 data,里面装着:

hero.on('spawn-guard', 函数) 把你的处理函数注册上去:

def guardAct(data):
    guard = data.guard
    place = data.place
    while True:
        monster = guard.findNearestMonster()
        if monster:
            guard.attack(monster)

hero.on('spawn-guard', guardAct)
!!!极其重要!!!不要在事件处理函数里使用会"阻塞"的英雄方法,比如 hero.specialhero.build。它们会卡住你的主线程,导致不可预测的混乱结果。事件函数里只用守卫自己的方法(如 guard.attackguard.special)。

6.3 守卫能力(Guard Abilities)

每当守卫攻击一个怪物,那个怪物就会把仇恨(注意力)转向守卫。利用这个机制,守卫有四种能力来"牵着怪物的鼻子走":

能力效果cooldownspecificCooldown
"roar" 咆哮让 20 米半径内所有怪物都来攻击守卫(强制聚怪/拉仇恨)0.5 秒5 秒
"hide" 隐匿重置所有以该守卫为目标的怪物仇恨(脱战逃跑)0.3 秒3 秒
"haste" 加速守卫速度提升 2 倍,持续 3 秒0.1 秒10 秒
"home" 归位把守卫瞬间传送回它的出生点0.3 秒7 秒
战术组合:roar 把怪物全吸引过来 → 你的加农炮/冰霜塔集中招呼这一团;血量危险时用 hide 甩脱仇恨、再用 haste 加速跑路或 home 直接回家保命。守卫就是你的"活体诱饵 + 机动尖兵"。

6.4 守卫 API(Methods & Properties)

方法 Methods

方法说明
moveTo(x, y)移动到点 {x, y},阻塞守卫代码直到抵达
moveTowards(x, y)朝点 {x, y} 移动,非阻塞,只占用 1 帧
attack(target)攻击指定目标
special(abilityName)使用上面介绍的守卫特殊能力
isReady(abilityName)返回布尔值,检查某能力当前是否可用
distanceTo(target)返回到目标的距离
findMonsters()返回当前存活怪物的列表
findNearest(targets)返回 targets 列表中最近的对象
findNearestMonster()等价于 guard.findNearest(guard.findMonsters())

属性 Properties

属性说明
id守卫的唯一名称
type类型,守卫为 "guard"
health / maxHealth当前生命值 / 最大生命值
color所属队伍,"red""blue"
maxSpeed守卫的移动速度
x / y横 / 纵坐标(蓝方 x 自动镜像)
position包含 {x, y} 的向量对象
attackRange攻击范围
attackCooldown一次攻击占用的时间(代码阻塞)
attackDamage每次攻击的伤害

7. 怪物图鉴

Monsters —— Know Your Enemy

7.1 怪物波次(Monster Waves)

怪物以波次(Wave)的形式出现,有节奏可循:

你可以提前查询波次信息,针对性地布防:

# 查询第 n 波的怪物信息
hero.getWave(n)

# 查询全部波次信息
hero.getWaves()
剧情彩蛋:随着战斗推进,裂隙会派遣更强、更厚实的新怪物部队。前期的轻松绝不会持续到最后——你的防线要能扛得住后期的精英怪潮。

7.2 怪物 API(Monster Properties)

属性说明
id怪物的唯一 ID
x / y横 / 纵坐标(蓝方 x 镜像)
health / maxHealth当前 / 最大生命值
maxSpeed怪物的移动速度
type怪物的类型字符串

想知道某种怪物的详细参数,用:hero.getMonsterParameters(monsterType)

7.3 怪物类型(Monster Types)

苔原塔里有 11 种怪物,按等级(tier)从弱到强排列。注意几个关键属性:飞行(flying)怪物会无视加农炮,只有法师塔克它;远程(ranged)怪物不用贴近就能攻击你的基地,必须优先处理!

munchkin 小喽啰munchkin tier 0 · 地面近战
ogre 食人魔ogre tier 1 · 厚实慢速
thrower 投掷者thrower tier 1 · 地面远程
orb 浮游球orb tier 1 · 飞行近战
troll 巨魔troll tier 2 · 厚实慢速
shaman 萨满shaman tier 2 · 地面远程
bird 飞鸟bird tier 2 · 飞行近战
brawler 斗士brawler tier 3 · 厚实慢速
warlock 术士warlock tier 3 · 地面远程
rider 骑手rider tier 3 · 飞行远程
elemental 元素elemental tier X · 极厚地面
类型等级特征
"munchkin" 小喽啰tier 0弱小,地面,近战
"ogre" 食人魔tier 1厚实,缓慢,地面,近战
"thrower" 投掷者tier 1弱,地面,远程
"orb" 浮游球tier 1飞行,近战
"troll" 巨魔tier 2厚实,缓慢,地面,近战
"shaman" 萨满tier 2弱,地面,远程
"bird" 飞鸟tier 2飞行,近战
"brawler" 斗士tier 3厚实,缓慢,地面,近战
"warlock" 术士tier 3弱,地面,远程
"rider" 骑手tier 3飞行远程(最棘手!)
"elemental" 元素tier X极厚实,地面,近战(最强地面单位)
克制要点:看到飞行怪(orb / bird / rider)→ 法师塔伺候(4 倍伤害);看到一堆缓慢的厚血近战怪(ogre / troll / brawler / elemental)→ 用 pull 聚成团 + 加农炮 AOE + 冰霜塔减速;看到远程怪(thrower / shaman / warlock / rider)→ 优先用守卫或 teleport 处理,别让它们隔空磨血。

8. 实战策略

Putting It All Together

把所有系统串起来,一套稳健的苔原塔思路大致是这样的:

  1. 开局经济:法力有限(上限 100,每塔 25),开局优先在怪物必经的咽喉位置建 1–2 座弓箭手塔快速起步、靠击杀滚雪球。
  2. 分工补全:随着法力积累,补上法师塔(防空 + 远射)和加农炮(清地面团),形成多类型混合防线。务必保证有对空塔
  3. 升级优先:由于伤害随等级呈对数增长,关键位置把塔升级往往比铺新塔更划算——同点重复 build 即可升级。
  4. 技能控场special 不耗法力,要勤用、轮转着用。pull 聚怪喂炮、burst 推开逼近基地的怪、teleport 把麻烦丢回去。
  5. 守卫机动:用 spawn-guard 事件让两名守卫自动找最近的怪攻击;危险时 roar 拉仇恨集火、hide + haste + home 保命。切记事件函数里别调用 build / special
  6. 预判波次:用 getWaves() 提前看清后续怪潮,针对飞行/远程/厚血怪提前调整塔的配置。
  7. 管理法力:接近上限就花掉,绝不浪费每一点法力。
终极目标提醒:你不必"全歼"怪物,只需让你的心脏比对手的撑得更久。每一座塔、每一次技能、每一个守卫动作,都是为了这一个目的服务。

9. 调试技巧

Debug —— Find Bugs Faster

学会调试,效率翻倍!在比赛中,你可以把关键信息打印出来观察。查看输出的方法:在浏览器中右键点击页面 → 检查 → Console(控制台)标签页。

print("当前法力值:", hero.mana)
print("当前波次:", hero.getWaveNumber())

# 检查技能是否冷却完毕
print("拉力技能是否就绪:", hero.isReady("pull"))

# 打印已建造的防御塔信息
myTowers = hero.findMyTowers()
for t in myTowers:
    print("塔类型:", t.type, "等级:", t.level, "位置:", t.x, t.y)

你也可以查看对手水晶(基地)的血量,判断战况:

# 查看敌方水晶血量
enemy = hero.getEnemyHero()
print("敌方水晶血量:", enemy.health)

核心速查表 ✨

苔原塔核心速查
图4:苔原塔三大系统全景图——塔 · 技能 · 守卫
系统关键命令 / 概念要点
目标守住心脏(基地)比对手活得更久即获胜
法力上限 100,每塔 25,hero.mana每秒流入 + 击杀奖励,溢出作废
建造hero.build('类型', 'A') 或坐标同点重建=升级;蓝方 x 自动镜像
弓箭手"archer"快、便宜,清杂兵,可对空
法师"mage"防空(飞行 4 倍)、穿透、远射 30
加农炮"cannon"AOE 炸地面团;不能对空
冰霜"frost"减速控场,辅助核心
特殊技能hero.special('pull'/'push'/'burst'/'teleport', x, y)不耗法力,独立冷却
守卫hero.on('spawn-guard', fn)免疫技能、自愈、重生;能力 roar/hide/haste/home
怪物hero.getWaves() / getMonsterParameters()12 秒一波,飞行/远程要警惕

塔阵成墙,技能乱敌,守卫破阵 ⚔️❄️
现在,去苔原塔的赛场上,让你的心脏跳动得比对手更久吧!🏰

CodeCombat 编程知识 · 多人竞技场:苔原塔(Tundra Tower)

扣哒世界(CodeCombat)教研团队