问题描述
我正在实现Hexic游戏。游戏以制作六边形簇为中心,以将其从棋盘上移除。我找到了一种方法来识别属于群集的每个六边形的坐标,以便将它们添加到集合中。其中一些将被识别两次,但是我只希望每个坐标都保存一次,这就是为什么我选择了一个集合。
问题在于,无论如何两次将坐标添加到集合中。
以下是相关代码:
实例化集合:
private Set<int[]> clusters = new HashSet<>();
用于标识集群的嵌套循环:
void findClusters() {
for (int i = 0; i < NOOFCOLUMNS; i++) {
for (int j = 1; j < NOOFROWS; j++) {
Color color = hexagons[i][j].color;
int row = j-i%2; // do not remove,else magic number
if ((hexagons[i][j-1].color == color)) {
if ((i>0)&&(hexagons[i-1][row].color==color)) { addCluster(i,j,-1); }
if ((i<9)&&(hexagons[i+1][row].color==color)) { addCluster(i,+1); }
}
}
}
}
void addCluster(int i,int j,int x) {
clusters.add(new int[] { i,j });
clusters.add(new int[] { i,j-1 });
clusters.add(new int[] { i+x,j-i%2 });
}
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)