远离2Dgrid中的对象

2024-04-25 14:35:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python开发一个小游戏。我使用的是二维矩形网格。我知道,我喜欢找一个不同的方法。在

假设我们有一个电脑控制的人类和一些电脑控制的僵尸。当人类发现一个僵尸,它应该尽量远离它。现在,为了测试所有的东西,我只要转过180度就跑了,直到我发现另一个僵尸,然后重复。在

显然这不是很聪明(如果双方都有僵尸的话,可能会引起问题)。在

我想知道有没有更聪明的方法?像是用Dijkstra找到一个“安全地带”,我可以跑到那里?替代品总是受欢迎的,我好像想不通。在


Tags: 方法替代品人类僵尸小游戏电脑dijkstra矩形网格
2条回答

你可以假设僵尸可以看到特定范围内的所有东西(半径或者可能更聪明),然后让人类寻找一个他认为僵尸看不到的地方。选择僵尸看不到的最近的一个点,使用A*算法查找路径(如果存在),否则尝试其他路径。无处可逃时小心。或者,您可以使用一个基于距离僵尸(如果选择该点)的值来加权可见性区域中的所有点。在

就在我的头顶上,你也许可以做一些向量数学,让人类以正常的向量运行到僵尸身上。在

我不知道这会有多好(或者它将如何扩展到你拥有的僵尸数量),但是你可以做一些类似的事情:

  • 对于每个僵尸,计算到人类的距离和它与人类的方向。

  • 使用方向和距离的倒数为每个僵尸(或近僵尸的某个子集)创建一个向量,因为僵尸越近,逃跑就越重要。

  • 求所有向量的和。

  • 使人以法向量运行到结果。

我不确定这会有多大的资源密集度,但这似乎是最合乎逻辑的方式来划分运行的优先级。在

相关问题 更多 >