什么是算法来检测我的所有游戏块是否被不相邻的敌人块包围?

时间:2017-04-16 14:49:23

标签: algorithm

我正在用java实现一个目标是达到游戏板边缘的游戏。因此,如果一个玩家的所有棋子都被不一定相邻的敌人棋子包围,这样他们就无法在任意数量的移动之后到达棋盘的边缘,那么该玩家就会失败。

我很难尝试开发一种算法来检查这种情况。我已经接近了看敌人和被包围的棋子的情况并没有取得任何进展。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以使用填充方法。我假设你有一些放置游戏棋子的棋盘。我们将使用第三种颜色的附加部分。如果有白色和黑色,请说你的第三种颜色是红色。

这是白色的一个可能的算法:

步骤1:如果白色(或红色,见下文)位置周围没有空白区域,则表示已完成:白色位于边框处或其周围。返回答案(删除所有红色部分,再见下文)。

步骤2:找到一个空白点(必须有一个空白点,否则你将在步骤1中结束),在现场添加一个红色。回到第1步。

答案 1 :(得分:-1)

Delaunay三角剖分为您提供任意空间分布中一组点的邻接信息。有图书馆可以做到这一点。

Delaunay三角剖分的几何对偶称为Voronoi图。后一个概念起初可能更容易理解。

在图像中,您会看到黑色的Delaunay三角剖分和红色的Voronoi图。

https://en.wikipedia.org/wiki/File:Delaunay_Voronoi.svg