什么是一个很好的算法,用于查找两个对象是否连接在2D网格中?

时间:2013-08-26 23:25:37

标签: algorithm

我目前处于开发游戏的早期阶段,其中玩家通过将个别系统(货舱,武器控制,船员宿舍等)放置在2D网格上来建造宇宙飞船。船的“根”部分是船长所在的桥梁,并命令周围的人。

我需要的是一种算法,可以检查以确保每个部件都直接连接到桥,或者通过连接到可以追溯到桥的另一系列部件。

当然,一部分将被删除,它不会以某种方式连接到桥。

任何人都知道可以做到这一点的算法吗?

1 个答案:

答案 0 :(得分:3)

这是一种简单的“填充”方法,可以满足您的需求

  • 将A点添加到名为scanning
  • 的集合中
  • 同时创建一个名为checked的集合(在开头留空)

  • 虽然未找到B点且集合scanning不为空:

  • 对于scanning集合中的每个点,执行以下操作:
  • 如果是B点,则停止。
  • scanning集中删除该点 添加到checked
  • 为每个邻居,如果它没有添加到checkedscanning然后将邻居添加到scanning