4X4网格中的哪些单元格彼此相邻?

时间:2012-08-06 21:34:24

标签: language-agnostic multidimensional-array

我有一个数组,用于存储4X4网格中的单元格索引,0,1,2,3等。我知道项目0旁边是项目1(右侧)和项目4(下面)。我如何编写一个函数来返回直接传入索引的单元格的索引?

function getCellsAround(0)
{
     should return 1 and 4
}

2 个答案:

答案 0 :(得分:2)

public static ArrayList<Point> getPointsAround(Point p, Rectangle r) {
    ArrayList<Point> points = new ArrayList<Point>();
    for(int dx = -1; dx <= 1; dx++) {
        for(int dy=-1; dy <= 1; dy++) {
            if(dx!=0 || dy !=0) {
                Point point = new Point(p.x+dx, p.y+dy);
                if(r.contains(point)) {
                    points.add(point);
                }
            }
        }
    }
    return points;
}

那样的东西?它使用x,y坐标(Point类)而不仅仅是:

(1,2,3

4,5,6)

答案 1 :(得分:1)

这听起来像是我的作业,所以这是一个大致的想法。

为每种类型的邻居创建一个函数。由于您编写了这么多语言,因此不确定您实际使用的是什么。这是java

private Integer getTopNeighbor(int ind) // ....
private Integer getBottomNeighbor(int ind) // ....
private Integer getLeftNeighbor(int ind) // ....
private Integer getRightNeighbor(int ind) // ....

public Integer[] getAllNeighbors(int ind) // use the four above to determine

然后其中一些可能为空(例如第一个索引0将没有左或顶部邻居)。所以检查所有这些并返回非空的。

为了让你开始,getRightNeighbor将是ind + 1并进行一些边界检查。