gpt4 book ai didi

java - 用二维数组环绕计算邻居(生命游戏)

转载 作者:行者123 更新时间:2023-12-02 06:42:23 25 4
gpt4 key购买 nike

所以我正在尝试构建生命游戏程序,并且我对 java/编码总体来说相当新鲜,并且我在将我的头包裹在 2D 数组中时遇到问题。我有一个构造函数和方法,可以构建一个数组并将“单元格”放置在我想要的位置,但我不明白如何查看一个单元格有多少个邻居。

总结一下:

我可以制作任何类型的二维数组。

我可以将“单元格”放置在数组中的不同元素

现在我如何看到正在检查的单元格旁边的空格在所有一侧都有邻居(我使用嵌套的 for 循环来遍历每个单元格)?

请记住!环绕在这里生效。

更新:这是我所拥有的,但是当我测试它时,它返回的邻居比应有的少 1 个。更新 2:我删除了第一个 if 语句,因为我认为它没有意义。但现在我无法让 c 上升 1。

public int neighborCount(int row, int col) {
int count = 0;
for (int r = 0; r < society.length; r++) {
for (int c = 0; c < society[0].length; c++) {
// up and left
if ((society[(r - 1 + row) % row][(c - 1 + col) % col]) == cell) {
count++;
}
// up
if ((society[(r - 1 + row) % row][c]) == cell) {
count++;
}
// up and right
if ((society[(r - 1 + row) % row][(c + 1 + col) % col]) == cell) {
count++;
}
// left
if ((society[r][(c - 1 + col) % col]) == cell) {
count++;
}
// right
if ((society[r][(c + 1 + col) % col]) == cell) {
count++;
}
// down and left
if ((society[(r + 1 + row) % row][(c - 1 + col) % col]) == cell) {
count++;
}
// down
if ((society[(r + 1 + row) % row][c]) == cell) {
count++;
}
// down and right
if ((society[(r + 1 + row) % row][(c + 1 + col) % col]) == cell) {
count++;
}
}
}
return count;
}

我的测试:

@Test
public void testNeighborsWrapping() {
GameOfLife society = new GameOfLife(10, 16);
society.growCellAt(3, 3);
society.growCellAt(3, 4);
society.growCellAt(3, 5);
assertEquals(0, society.neighborCount(2, 1));
assertEquals(1, society.neighborCount(2, 2));
assertEquals(2, society.neighborCount(2, 3));
assertEquals(3, society.neighborCount(2, 4));

}

}

最佳答案

如果我正确理解问题,代码可能是这样的

Object[] getNeighbors(int i, int j) {
// put code to return the neighbors given an index
}

boolean allNeighborsFull(int i, int j) {
Object[] neighbors = getNeighbors(i, j);
boolean allFull = true;
for (Object neighbor : neighbors) {
if (!neighbor.full()) {
allFull = false;
break;
}
}
return allFull;
}

boolean allNeighborsSurrounded() {
Object[] neighbors = getNeighbors(i, j);
// check each one of these using the method above
}

关于java - 用二维数组环绕计算邻居(生命游戏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19018289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com