Java 生命游戏失灵
为什么我的人生游戏不能正常运行? 他们并不总是在拥挤的时候死去 相关代码是grann(x,y),它应该返回围绕基质[x][y]的活细胞数量, run应计算下一代:Java 生命游戏失灵,java,logic,Java,Logic,为什么我的人生游戏不能正常运行? 他们并不总是在拥挤的时候死去 相关代码是grann(x,y),它应该返回围绕基质[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(
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;
}
private int grann(int x,int y){
int n=0;
对于(inti=-1;i我认为问题在于grann应该说:
if(i != 0 && j != 0)
因为您只想消除正在检查的3x3区域的中心正方形(单元格本身),而不是它所在的行和列。因为next=matrix
不复制矩阵。它们都指向同一个对象。因此您所做的更改会影响周围单元格的计算。可能的重复我应该使用循环复制它,还是有更简单的方法?请参阅以复制2d数组。我将自己制作,但不是汉克斯!