所以我正在嘗試構建生活程序遊戲,並且我對Java /編碼一般都很新鮮,而且我的問題正圍繞着環繞我的頭部在二維數組中。我有一個構造函數和方法,將構建一個數組,並將「單元格」放在我想要的位置,但我不明白我如何能夠看到一個單元格有多少個鄰居。在2d數組(生命遊戲)中計數鄰居
總結一下:
我可以做任何類型的二維數組。
我可以把「細胞」,在不同的元素數組中現在
我怎麼看到的是空間旁邊我被檢查電池在所有側鄰近(我用一個嵌套循環來遍歷每個細胞)?
繼續努力!環繞在這裏是有效的。
更新:這是我的,但是當我測試它時,它會返回比應該有的更少的鄰居。 更新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));
}
}
爲什麼不直接手動檢查每個單元? –
好的編號喜歡讓我的方法爲我做,所以我可以說,去吧。 – Tejas
在您的方法中,您手動檢查每個(周圍)單元格。 –