Algorithm 当我们有一些块在中间时,如何找到最接近大多数点的点!(阵列2D-蛇游戏)

Algorithm 当我们有一些块在中间时,如何找到最接近大多数点的点!(阵列2D-蛇游戏),algorithm,grid,distance,path-finding,Algorithm,Grid,Distance,Path Finding,我正在做一个蛇形游戏(Linux中的啃食),它在一个60*60的场地上玩,四条蛇争夺一个随机放置的苹果 我已经用A*(A星)算法实现了蛇的运动 我的问题是:当我不是离苹果最近的蛇时,我不想去拿苹果,因为我得到它的机会比至少一条蛇要低,所以我想寻找一个我希望在下一个生成苹果的地方,然后我将是离苹果最近的蛇。我的意思是,我正在寻找一个最接近潜在地点最大数量的地方 请提出任何好的方法或算法,可以帮助我找到这个地方 这是一个游戏的图像。红点是蛇头 如果你离苹果最近,你应该步行去拿它,但如果你离苹果很远,

我正在做一个蛇形游戏(Linux中的啃食),它在一个60*60的场地上玩,四条蛇争夺一个随机放置的苹果

我已经用A*(A星)算法实现了蛇的运动

我的问题是:当我不是离苹果最近的蛇时,我不想去拿苹果,因为我得到它的机会比至少一条蛇要低,所以我想寻找一个我希望在下一个生成苹果的地方,然后我将是离苹果最近的蛇。我的意思是,我正在寻找一个最接近潜在地点最大数量的地方

请提出任何好的方法或算法,可以帮助我找到这个地方

这是一个游戏的图像。红点是蛇头


如果你离苹果最近,你应该步行去拿它,但如果你离苹果很远,你最好的机会就是走在地图的中间,你应该找到占领地图中间的策略

可以将地图分为四个缩放(顺时针)、左上角、右上角、右下角和左下角(1,2,3,4)。我们在两条蛇之间检查这一点:如果苹果当前处于zoom 1(假设中心为平均值),而你处于地图的中心,你的对手可以处于zoom 1、2、3、4(再次假设它处于该缩放的中心,以更简单的方式取平均值)如果它处于zoom 1,它有更好的机会(1-0)如果它处于zoom 2或zoom 4,你的距离是sqrt(2)/你的对手距离是1,所以你是最近的,最后,如果你的对手在zoom 3中,你的距离是sqrt(2)/2,你的对手距离是sqrt(2),所以在3种情况下,有一个对手你有更好的机会


但因为形状有一些块,所以应该以另一种方式计算中心位置,事实上,对于栅格中的每个点,计算其到所有其他点的距离。这将需要60^2*60^2,可以快速完成。并找到总和最小的单元格(您可以选择最好的10个单元格),这些单元格可以是您的中心,每次您都应该从一个中心移动到另一个中心(除非您离苹果最近,或者您的蛇吃了苹果,并希望合并到最近的中心)。

因为您已经实现了A*,在生成地图之后,您可以使用*创建每个单元格的值映射,该映射基于每个单元格访问其他单元格的总成本。如果在放置块后生成此图,则加权贴图将说明它们的存在

为了产生这个,在我的脑海里,我会说你可以从每个细胞开始,为每个细胞分配一个点,每个细胞可以访问一次。例如,角落中的一个单元格在第一次移动时将获得两个点,因为它只能访问另外两个单元格。第二回合它将获得五分,因为它可以在两次移动中进入五个单元格。重复上述步骤,直到你访问了所有其他方块,然后你就得到了该方块的分数

从那时起,如果一个苹果出现,而你的蛇不是离它最近的,那么你的蛇可能会朝着重量最高的细胞前进,这是你事先计算过的


编辑:请参阅下面的注释以获得更有利的解决方案。

最接近最大位置数的是中心,如其他人所述。与其他蛇相比,更接近最大数量的位置是一个非常不同且更难的问题。在这种情况下,我会检查每条蛇的头部,看看谁控制的方块最多。这是基本分数。接下来,当我画一张空白的地图时,我会在地图上随机选取一组点,然后选择得分最高的点作为目的地。如果你有处理能力,你可以尝试网格上的每一点,并按照K.G.的建议选择最好的,但这可能会变得非常激烈


真正的测试是当你找到你的观点,计算出你在未来要走多远才能到达那里,然后运行一些人工智能让其他蛇看看他们是否会拦截你。你开始像下棋一样进入PLY

我测试了一些方法,最后我决定使用这种方法:

我认为最好的方法是制作一个大小为60*60的2D数组,然后对于数组中的每个节点(x),计算字段中可行走的节点数!(非块),此节点(x)是否距离最近

然后答案将是最大金额,然后我设置这个节点的目标

但因为我必须在0.1秒内找到下一步,并且要做这项工作,有4个循环的大小:60,(60^4),当我找到它时,一个*算法也会运行,这项工作永远不会在0.1秒内完成

因此,由于蛇不能沿对角线移动,它只移动:上、下、右、左,我决定不检查所有节点,因为在每个循环(0.1秒)中,我只能移动1个单位,我决定只检查4个节点(上、下、左、右),并移动到其数量最大的节点


现在它几乎正常工作了

但这不是我们要的,不是吗?要求什么取决于其他蛇的位置。@andrewcooke他正在寻找距离所有其他地方最近的地方。如果他不是最接近当前苹果的人,那么他就想去那里,因为他期待着更快地进入下一个苹果。我不这么认为。我认为最佳的地点比任何其他蛇都更靠近更多的地方。如果其他蛇离你更近,那么靠近很多地方是没有意义的。事实上,重读q你可能是对的(在这种情况下,他们问的不是最好的问题,但这是提问者的问题)。如果您编辑您的答案(解锁我的投票),那么我将删除否决票。@andrewcooke Done。你也应该给出你的答案,虽然它可能不是被要求的答案,但它是对问题核心的更好答案。同样,这不是被要求的答案。如果在最左边有一名选手,则第