查找Paper.io游戏的内部算法

时间:2019-06-26 08:19:06

标签: algorithm greedy

看看这个游戏:http://paper-io.com/

从这个游戏移开后,我一直坚持寻找内部零件的算法。

enter image description here

看我的照片。播放器的原始土地为红色。玩家移动为橙色。新土地是绿色的。

我的问题是如何指定绿色部分。我认为完全移动后,可能有两个部分可以选择为绿色(绿色部分和外部网格部分)。

选择一个开始并找到墙,以知道造成浪费时间的是哪个部分。

感谢您阅读。

2 个答案:

答案 0 :(得分:1)

从不是红色或橙色的外边缘的每个点开始填充。

停在红色或橙色方块上。

这将为您提供您将要填写的区域,因此只需填写剩余的内容即可。

几次都用了100%的paper.io,我可以验证这与它的功能相同。

您还可以同时从新墙的两面注水。如果一个填充物找到了外边缘,则丢弃该边缘并保留另一个。如果一个在找到外边缘之前停了下来,则保留其中一个并丢弃另一个。

答案 1 :(得分:1)

假设您要求使用栅格算法,但让我们尝试推广此问题。

让我们假设我们总是记住占用(红色)区域的电路并将其存储在一个看起来像圆形链表的图形中。每个节点都有坐标(x, y)。所以我们有这样的东西:

  A2 -- A3 -- A4
 /             \
A1             A5
 \             /
  A7 -------- A6

与此同时,我们还记得起点区域内的一个点。

该游戏中的每个回合都从电路上的某个位置开始,或者在现有节点上,或者在现有两个节点之间的新节点上,并在检测到运动矢量和电路的交点时结束。这些节点是PR。此回合绘制的整个路线创建了赛道的新部分。运动矢量是每个时间点中“头部”所执行的步骤。

起始节点P将边线A3 - A4分为两个边线A3 - PP - A4,这些边线已添加到图形中。边缘A3 - A4已从图形中删除。

此步的每一步都增加了下一个边缘:P - B1B1 - B2,...最后,我们将边缘A6 - A7A6 - RR - A7进行交换。 / p>

每个圆图如下:

                B1 -- B2 -- B3
               /             \
  A2 -- A3 -- P -- A4         B4
 /                  \         |
A1                  A5        |
 \                  /         B5
  A7 ------ R --- A6         /
             \              /
              B7 --------- B6

现在是时候遍历图表并将访问节点收集到新电路中了。在一系列多边形并集算法或here(第3和第4步)中描述了这种步行方式。

当我们有一个新的电路时,我们可以将其绘制并从记忆点开始填充。