人工智能如何检测游戏中的敌人是否可以被阻挡/困住?

人工智能 游戏-ai 蒙特卡罗树搜索
2021-10-26 08:33:15

想象一个在 10x10 网格系统上玩的游戏,玩家可以向左或向右上下移动,并想象在这个网格上有两个玩家:一个敌人和你。在这个游戏中,网格上有你无法穿过的墙。这场比赛的目的是阻止敌人进入,这样他就不能在棋盘的其余部分移动并被有效地“困住”。

我想编写一个算法来检测我作为玩家需要在棋盘上的哪些节点放置块,以诱捕敌人。还有一些其他的考虑需要考虑。你必须能够在敌人的地方从盒子里出来之前放置块。还要注意更多的事情:您可以移动并同时在您要移动的位置放置一个块。

这是一张图片作为游戏的示例。

在此处输入图像描述

编辑:请注意,图片中的板是 5x5,但这对于示例的目的来说是可以的

在这个例子中,我可以向上,然后向右放置一个方块,然后向右放置一个方块,然后向上放置一个方块。如果阻挡敌人的方法不止一种,那么我应该使用能给敌人最小空间的方法。

在谷歌上搜索找不到任何相关的东西,尽管这可能是因为我没有使用相关的搜索词。我还考虑过使用蒙特卡洛搜索树算法来同时进行游戏,但我需要对此进行更多研究。

1个回答

如果我正确理解了逻辑,玩家会尝试建造一堵墙,以使敌人无法以任何方式接触玩家。这通常可以通过一些寻路算法来确定,Dijkstra Shortest Path 算法是设置和网格大小的合理选择。该算法探索从一个起点到一个或多个终点的可能路径,通常返回到该点的最短路径。如果没有到提到的点的路径,它不会返回任何东西,你会知道这两个点被阻止到达对方。

当然,如果我真的正确理解了规则,更大的问题是如何避免让玩家只是在自己周围建造一堵墙来阻挡敌人,这可能会很容易。并且另外的规则是在房间被封锁后要求玩家在更大区域的“房间”中(巧合的是,也可以通过使用自定义逻辑扩展 Dijkstra 算法来完成)