Kithgard附魔师 (Kithgard Enchanter)
战术思路分析:定义魔法咒语
英雄失去了靴子!你必须定义自己的移动函数,就像是给英雄施加了一个“移动咒语”。
关键:函数定义 (`def`)
定义函数使用 `def 函数名():` 结构。函数体内的代码描述了移动逻辑:读取当前位置,计算新位置 (`+ 12` 或 `- 12`),然后使用 `hero.moveXY` 移动。
def moveRight():
x += 12
Python 程序解法
扫雷 (Mine Field)
战术思路分析:生命值比例
英雄必须用身体引爆地雷,但生命值不能太低。当生命值低于**最大生命值的一半**时,必须撤退治疗。
关键:`hero.health` 和 `hero.maxHealth`
- **健康阈值:** `healingThreshold = hero.maxHealth / 2`
- **判断:** `if hero.health < healingThreshold:`
这是一种经典的**状态判断**,英雄根据自身状态决定行动(战斗或撤退)。
IF Health < MaxHealth / 2: Heal!
Python 程序解法
'Killdeer'操作 (Killdeer Operation)
战术思路分析:诱敌深入
食人魔只有在你看起来“受伤严重”时才会追击你。你需要利用这个机制,假装受伤,将他们引入陷阱(红色 X 标记处)。
shouldRun() 函数
我们用 `shouldRun()` 函数来判断英雄是否“看起来很弱”(生命值低于一半)。当函数返回 `True` 时,英雄就该跑了!
IF shouldRun(): moveXY(Trap)
Python 程序解法
医疗护理 (Medical Care)
战术思路分析:即时治疗
这次你没有诱敌深入的计划,只是纯粹的生死存亡。当血量低于一半时,必须立即去治疗师那里喊话治疗。
关键:`if / else` 结构
英雄只有两种选择:`if` (受伤去治疗) 或者 `else` (继续战斗)。
IF Health < Threshold: moveXY(Healer)
Python 程序解法
概念挑战. 王之谷 (Valley of the Kings)
战术思路分析:生命值阈值
这次我们不是看英雄的血量,而是看**敌人的血量**。只有当骷髅的血量**高于**最大生命值的三分之一时,才攻击它。
公式:目标血量 > 阈值
攻击条件:`enemy.health > enemy.maxHealth / 3`
一旦低于这个阈值,敌人就太弱了,不值得攻击,我们跑开!
IF Enemy.Health > 1 / 3: Attack()
Python 程序解法
组合挑战. 千岩谷 (Thousand Lashes)
战术思路分析:多重状态决策
这个终极挑战要求英雄同时处理三件事:
1. **生命值比例:** `health < maxHealth / 3` (决定是否呼叫治疗)
2. **物品位置:** `item.pos.x > hero.pos.x` (决定向右移动)
3. **物品位置:** `item.pos.y > hero.pos.y` (决定向上移动)
不相关 If 语句的顺序
**治疗呼叫**和**移动决策**是相互独立的,因此它们使用平级的 `if` 语句。移动决策中的 X 和 Y 也是独立判断的。
IF Low HP: Say("Heal!")
IF Item Right: X += 8
IF Item Up: Y += 8
Python 程序解法
守时 (On Time)
战术思路分析:时间分配
英雄必须根据游戏时间切换任务:前 10 秒战斗,10 到 35 秒收集硬币,35 秒后再次战斗。
关键:`hero.time` 与 `elif`
- **`hero.time`:** 获取游戏开始后的秒数。
- **`elif`:** 确保时间段是互斥的。如果 `time < 10` 为 True,后面的 `elif` 即使条件满足也不会执行。
IF Time < 10: Fight
ELIF Time < 35: Collect
ELSE: Fight Again
Python 程序解法
沙漠十字 (Desert Cross)
战术思路分析:四象限攻击
食人魔从对角线(四个象限)进攻。你需要用布尔变量 (`isLeft`, `isAbove`) 来简化 `and` 运算的复杂逻辑,快速定位并放置陷阱。
布尔变量的应用
先将复杂的比较结果存入布尔变量:
`isLeft = hero.pos.x > enemy.pos.x`
然后组合它们:`if isLeft and isAbove:`
IF Left AND Above: Trap(TopLeft)
Python 程序解法
囤积黄金 (Hoard)
战术思路分析:及时退出
收集到 25 金后,必须立即停止,否则你会被沙漠困住!你需要用 `break` 语句来强制退出无限循环。
关键:`break`
- `if totalGold >= 25:`
- break
`break` 会立即终止当前的 `while` 循环,程序跳转到循环后的第一条语句(即移动并报告)。
IF Goal Reached: break
Python 程序解法
诱饵演习 (Decoy Drill)
战术思路分析:资源管理与建造
英雄需要收集金币,然后花费 25 金来建造一个诱饵 (`"decoy"`)。
关键:`hero.gold` 属性
- 检查资源:`if hero.gold >= 25:`
- 建造:`hero.buildXY("decoy", x, y)`
我们使用 `decoysBuilt` 计数器来跟踪已建造的数量,当达到 4 个时,使用 `break` 退出。
IF hero.gold >= 25: buildDecoy()
Python 程序解法
概念挑战. 贪婪保护 (Greedy Protection)
战术思路分析:见好就收
这个区域太危险了!收集到 99 金后,英雄必须立即使用 `break` 语句逃到南部的红色 X 标记处。
循环退出条件
使用 `hero.gold` 属性与 `maxGold` 目标进行比较:`if hero.gold >= maxGold:`
达到目标后,`break` 是唯一的出路。
IF Gold >= 99: break