gpt4 book ai didi

java - A* 具有敌人意识

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:25 24 4
gpt4 key购买 nike

我目前正在涉足 Java AI 编程,并正在尝试 AI 挑战。在挑战中,我的 AI 有 2 秒的时间来响应新的游戏状态。如果超过这两秒而没有产生响应,我的 AI 就会失效。游戏由带有目标和敌人的网格组成,每个敌人都是游戏生成的独立 AI。我已经实现了一个标准的 A* 来找到最近的可用目标。

我希望我的 A* 算法能够增加可能被证明是危险的敌人附近方 block 的成本,从而避免危险路径。我正在考虑一个二维数组,其中包含每个方 block 的估计健康损失,仅限于在每个敌人的 ~2 个方 block 内计算(~5x5)。每个回合,对于每个敌人,这个数组都会有一个 5x5 的正方形设置为 0 并重新计算。

假设我编写的代码只执行它必须执行的操作并继续... 20x20 到 100x100 元素的二维数组是否会显着影响执行时间?每平方估计威胁的二维数组是否是计算 A* 算法成本以避免敌人的好方法?

更新:我让它工作得非常完美。我使用的成本函数:

For each enemy
Calculate manhattan distance
If 0 or 1, cost += absolute(enemy health - health) / 5
Else if 2, cost += absolute(enemy heath - health) / 10
Else cost += 0

使用它,我看到了一些非常令人印象深刻的寻路和移动;机器人通常会在没有其他 Action 来达到目标​​的情况下承担经过计算的风险,但基本上会避开敌人。添加启发式的性能成本是多么微不足道,给我留下了深刻的印象。它不是游戏的完美解决方案,但它向我展示了 A* 的强大程度。

A* 通常用于寻路,但我将修改它以实现游戏状态前瞻。我很确定这会把它变成极小极大算法。

最佳答案

如果你只是计算你的数组内容一次并且计算对于每个单元格来说很简单,比如检查几个相邻的单元格是否有敌人然后相对于您的时间限制,100x100 数组根本不起作用。

鉴于您帖子中的信息,我觉得这是个好主意。

关于java - A* 具有敌人意识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22493120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com