巫师闪电战背景

⚡ 巫师闪电战 ⚡

元素觉醒:编程英雄的终极挑战
🧙‍♂️

陈之然老师: “欢迎来到魔法学院的高级竞技场——巫师闪电战(Sorcerers' Blitz)!我是你的导师陈之然。”

“在这里,你不仅要指挥果农收集魔法果实(Manafruit),还要学会变身魔法!你可以把普通的果农变成会奔跑的猎豹、会爆炸的火球,甚至是会偷东西的盗贼!记住我们的目标:

🏆 存活得比对手更久,或者直接击败对手! 准备好接受挑战了吗?”

🍎 第一课:组建你的果农小队

一切魔法的源泉都是果农(Collector)。

def alwaysFire(collector): return "fire" # 告诉果农:专心收集火元素! hero.chooseItem = alwaysFire
string alwaysFire(Unit collector) { return "fire"; // C++小巫师这样写 } hero.chooseItem = alwaysFire;

✨ 第二课:元素魔法与相克

在这个竞技场里,防御护盾(Shield)的效果取决于元素相克规则。这就像玩“石头剪刀布”一样:

💧 水 Water
克制 ➔
🔥 火 Fire
克制 ➔
🏜️ 土 Earth
克制 ➔
💧 水 Water

魔法小贴士:

法术名元素消耗效果
fire-ball (火球)16200 伤害 (3秒)
water-refresh12+10 体力 (治疗果农)
fire-burn12-5 体力 (烧伤敌人果农)
earth-grow12水果变大 1.5倍
...shields各色4防御护盾

🦄 终极试炼:单位变身 (Unit Transformation) 重点!

这是获胜的关键!你可以消耗魔法值(Mana),把普通的果农变身为拥有超能力的特殊单位!

⚠️ 注意: 特殊单位使用特殊技能时会扣除生命值。我们要用代码直接控制它们。

hero.spawnCollector() # 把第0个果农变成 "runner" (奔跑者) hero.transform(hero.findMyCollectors()[0], "runner")
hero.spawnCollector(); // C++ 变身咒语 hero.transform(hero.findMyCollectors()[0], "runner");

🦸‍♂️ 特殊单位图鉴

🏃‍♂️ Runner (奔跑者)

水 Water

特点: 跑得比普通果农快!

技能: 冲刺 (消耗 1 hp)

花费: 4 水魔法

💣 Popper (爆破手)

火 Fire

特点: 不收集水果,专门炸人!

技能: 自爆 (造成伤害)

花费: 4 火魔法

🧙 Thief (盗贼)

火 Fire

特点: 从别人手里偷水果!

技能: 偷窃 (Steal)

花费: 4 火魔法

🌳 Grower (种植者)

土 Earth

特点: 走路慢,但在它身边水果长得快。

技能: 生长光环

花费: 4 土魔法


如何控制特殊单位? 使用 hero.on('spawn-类型', 处理函数)。看下面的例子,如何让奔跑者(Runner)工作:

def runnerLogic(data): unit = data.target while True: if unit.isReady(): unit.special() # 开启加速! if unit.item: unit.bring() # 有水果就送回去 else: fruit = unit.findNearestFruit() if fruit: unit.pick(fruit) hero.on('spawn-runner', runnerLogic)
void runnerLogic(EventData data) { auto unit = data.target; while (true) { if (unit.isReady()) { unit.special(); // 冲刺! } if (unit.item) { unit.bring(); } else { auto fruit = unit.findNearestFruit(); if (fruit) { unit.pick(fruit); } } } } hero.on("spawn-runner", runnerLogic);

🧠 之然老师的随堂考

如果对手派出了很多“火”属性的 Popper (爆破手) 冲过来,你应该把你收集的魔法主要用来转换成什么单位来克制或者防御?

提示:回顾一下元素相克表!(水克火)