快速赛跑 (Fast Race)
战术思路分析:并行行动
正常情况下,代码是**按顺序**执行的(英雄跑完,宠物才开始跑)。但赛跑需要英雄和宠物**同时**出发!
核心:事件处理器 (Event Handler)
我们使用 `pet.on("spawn", petMove)` 来将宠物的移动代码设置为一个**事件处理器**。当宠物一生成("spawn"事件),`petMove` 函数就会被触发,并与英雄的代码**并行**运行。
Hero: Move (Sequential)
Pet: On "Spawn" (Parallel)
Python 程序解法
沙漠蘑菇 (Desert Mushrooms)
战术思路分析:安全收集
蘑菇有毒,英雄必须在安全血量时才能收集。宠物可以帮忙取回药水。
宠物技能:`findNearestByType()`
宠物可以根据类型(字符串)查找最近的单位或物品:
`potion = pet.findNearestByType("potion")`
然后使用 `pet.fetch(potion)` 将药水带回给英雄。
Pet: findNearestByType("potion")
Python 程序解法
蘑菇之声 (Mushroom Minder)
战术思路分析:多目标取回
英雄需要打败骷髅并打开宝箱,宠物负责取回药水和金钥匙。
关键:连续 `pet.fetch()`
宠物可以连续接收多个 `fetch` 命令,它会排队执行:先找药水并取回,再找金钥匙并取回。
Fetch(Potion) → Fetch(Key)
Python 程序解法
钥匙陷阱 (Key Trap)
战术思路分析:宠物代劳
钥匙附近是陷阱,英雄不能亲自去拿!必须让宠物完成所有取回任务。
取回所有钥匙
宠物将按顺序执行 **铜钥匙、银钥匙和金钥匙** 的取回任务,无需英雄操心。
Fetch(Bronze) → Fetch(Silver) → Fetch(Gold)
Python 程序解法
命令链 (Chain of Command)
战术思路分析:识别发令者
宠物只能回应**英雄**的命令。你需要从事件数据中提取说话者(`event.speaker`)并进行身份验证。
事件属性:`event.speaker`
在 `onHear(event)` 函数中,`event.speaker` 存储了说话者的单位对象。
判断条件:`if event.speaker == hero:`
IF event.speaker == hero: pet.say()
Python 程序解法
宠物工程师 (Pet Engineer)
战术思路分析:兵种区分
宠物需要根据不同的呼救者(`archer` 或 `soldier`)移动到不同的按钮(控制机器人或大炮)。
关键:`event.speaker` 与 `elif`
首先找到两个发出指令的单位对象 (`archer`, `soldier`),然后在 `onHear` 中用 `if/elif` 结构比较 `event.speaker`。
IF Speaker == Archer: Left Button
ELIF Speaker == Soldier: Right Button
Python 程序解法
宠物翻译家 (Pet Translator)
战术思路分析:解密指令
炮兵说的是反向词!宠物必须将听到的消息(`event.message`)解密,然后说出正确的反向词。
事件属性:`event.message`
在 `onHear` 函数中,`event.message` 存储了说出的字符串。宠物需要检查这个字符串来决定说什么:
`if message == "North": pet.say("Htron")`
Message: "North"
Pet Say: "Htron"
Python 程序解法
宠物副官 (Pet Lieutenant)
战术思路分析:语音控制
英雄通过喊话来命令宠物移动到治疗点或火炮点。
IF/ELIF 语音命令
- `if event.message == "Fire"`: 宠物移动到火炮点 (`64, 16`)。
- `elif event.message == "Heal"`: 宠物移动到治疗点 (`64, 52`)。
Say("Fire") → Pet Moves to (64, 16)
Python 程序解法
炼金术 (Alchemy)
战术思路分析:送药待命
宠物必须在听到炼金术师说 `"Fetch"` 时才去拿药水;听到其他任何话时,都应回到待命点(红色标记)。
IF/ELSE 决策
- `if message == "Fetch"`: 拿药水 (`pet.fetch()`)。
- `else`: 回到待命点 (`pet.moveXY(54, 34)`)。
IF "Fetch": Fetch()
ELSE: Move(Red X)
Python 程序解法
概念挑战. 宠物探索者 (Pet Explorer)
战术思路分析:双重认证
宠物必须确保:**说话者是探索者** (`event.speaker == explorer`) **AND** **说的是正确的数字** (`event.message == "1"`)。
AND 与嵌套 IF
首先用 `if event.speaker == explorer:` 排除农民。然后在内部嵌套 `if/elif` 来检查 `event.message`。
IF Speaker == Explorer:
IF Message == "1": Move
Python 程序解法
危险钥匙 (Dangerous Keys)
战术思路分析:精确取钥匙
只有圣骑士(`paladin`)知道哪把钥匙是安全的。宠物必须听从圣骑士的命令,并使用 `findNearestByType` 找到正确的钥匙取回。
多重查找与 IF/ELIF
宠物首先需要预先找到所有三种钥匙的对象。然后,在 `onHear` 中,通过检查 `event.speaker` 和 `event.message` 来精确地执行 `fetch`。
IF Speaker == Paladin:
IF Message == "Gold": Fetch(GoldKey)
Python 程序解法
奥林匹克比赛 (Olympic Race)
战术思路分析:发令枪
比赛开始的条件非常严格:**必须是裁判** (`wizard`) **AND** **说的必须是 `"Start"`**。
AND 组合判断
`if event.speaker == referee and event.message == "Start":`
只有当两个条件都为真时,宠物才能开始比赛,否则就是抢跑!
IF Speaker AND Message: Run!