我有一个数组,用于存储4X4网格中的单元格索引,0,1,2,3等。我知道项目0旁边是项目1(右侧)和项目4(下面)。我如何编写一个函数来返回直接传入索引的单元格的索引?
function getCellsAround(0)
{
should return 1 and 4
}
答案 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并进行一些边界检查。