为什么我的生活游戏无法正常运作? 当他们太拥挤时,他们永远不会死。
相关代码是grann(x,y),它应该返回matrix [x] [y]周围的活细胞数, run应该计算下一代:
private int grann(int x,int y) {
int n = 0;
for(int i=-1; i<2; i++) {
for(int j=-1; j<2; j++) {
if(i!=0 || j!=0) {
if(matrix[x+i][y+j]) {
n++;
}
}
}
}
return n;
}
public void run() {
boolean[][] next = matrix;
for(int i=1; i<w; i++) {
for(int j=1; j<h; j++) {
int n = grann(i,j);
if(matrix[i][j]) {
if(!(n==2 || n==3)) {
next[i][j] = false;
}
} else {
if(n==3) {
next[i][j] = true;
}
}
}
}
matrix = next;
}
对象具有矩阵,宽度和高度。 matrix是布尔值[w + 2] [h + 2],w和h是整数。
如果你不了解康威生命游戏的规则: http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
答案 0 :(得分:0)
我认为问题在于格兰恩应该说:
if(i != 0 && j != 0)
因为您只想消除正在检查的3x3区域的中心方块(单元格本身),而不是它所在的行和列。