游魂 (Wander)
战术思路分析:多次命中
英雄需要对**每个敌人**持续攻击直到死亡,并对**每个物品**持续移动直到收集。
循环结构:遍历 + 持续行动
- **外层循环(遍历):** `while enemyIndex < len(enemies):` (保证每个敌人都被处理)
- **内层循环(行动):** `while enemy.health > 0:` (保证行动持续到条件改变)
Outer: WHILE Index < len(E): Next E
Inner: WHILE E.Health > 0: Attack()
Python 程序解法
潜伏 (Lurkers)
战术思路分析:类型筛选与坚持
英雄只攻击萨满巫师(`"shaman"`),并持续攻击直到击败。
关键:`if` 筛选 + `while` 持续攻击
- **`if enemy.type == "shaman"`:** 筛选出要攻击的目标。
- **`while enemy.health > 0:`:** 对选中的目标执行内层持续攻击。
**重要:** `enemyIndex += 1` 必须在内层 `while` 之后,但在外层 `while` 内部,以确保遍历继续。
IF E.Type == "shaman": WHILE E.Health > 0: Attack()
Python 程序解法
优待 (Preferential Treatment)
战术思路分析:优先击杀
投掷者(`thrower`)攻击力高,必须**优先**击杀。这需要两个独立的遍历循环(阶段):
两阶段战术
- **阶段 1:** 遍历一次,只攻击 `thrower`。
- **阶段 2:** 重新遍历,攻击所有**仍活着**的敌人。
Loop 1: IF Type == Thrower: Attack()
Loop 2: IF Enemy Exists: Attack()
Python 程序解法
Sarven 牧羊人 (Sarven Shepherd)
战术思路分析:排除与坚持
英雄必须攻击所有敌人,但要**忽略沙牦牛**(`sand-yak`)。对选中的敌人要持续攻击直到死亡。
结构:`while` (遍历) → `if` (筛选) → `while` (持续攻击)
- 遍历所有敌人,通过 `if enemy.type != "sand-yak"` 排除牦牛。
- 对非牦牛的敌人,使用 `while enemy.health > 0:` 确保击杀。
IF Type != Yak:
WHILE Health > 0: Attack()