A* 搜索特别有用的情况¶
一定要玩一玩上一节的示例代码和可执行文件,因为这是你真正熟悉 A 搜索行为的唯一方式。大多数较新的游戏中,你应该可以直接发送带目标的数据包,甚至在期望位置模拟点击地图,但当你遇到需要计算路径的情况时,你会庆幸学了 A。
实际上,计算路径在很多情况下都很有用:(cid:127)选择目标:机器人选择要攻击的目标时,你可能想检查角色
是否真的能到达它们。否则,如果敌人孤立在一个无法到达的房间里,你可能永远卡住试图瞄准它们!
(cid:127)选择尸体:当你的搜刮状态决定打开哪些尸体时,你可以通
过总是先尝试搜刮最近的尸体来优化。
(cid:127)模拟鼠标移动:极少数情况下,一些受高度保护的游戏会把
游戏内动作与鼠标移动关联,以确保没有机器人运行。这种情况下,你可能需要模拟鼠标。使用修改版 A*(把屏幕当作地图,没有阻挡瓦片,节点成本略微随机化),你可以为模拟移动时鼠标遵循的路径计算类似人类的路径。
(cid:127)放风筝怪物:如果你需要编写放风筝怪物的代码,你可以实
现 A*,目标状态是距离所有生物 N 个单位。使用本章展示的相同成本机制,玩弄启发式,给更靠近生物的节点更高成本。放风筝不是完全传统的用例,启发式需要大量调整,但一旦运行起来,它效果惊人。一些实现放风筝任何数量怪物的效果比人类还好!
(cid:127)预测敌人移动:如果你在编写与玩家战斗的机器人,你可以
用 A* 预测他们的移动并相应行动。例如,如果敌人开始逃跑,你的机器人可以假设他们跑向基地,计算他们的路线,用法术阻挡他们的路径,甚至传送到预期他们出现的位置。
这些只是 A* 搜索的几个用例,随着你改进机器人,你肯定会发现更多。本章剩余部分,我将描述一些流行的自动化破解,你可以用本书描述的技术实现它们。