我创建的算法(实现Conway的生命游戏规则)与Conway的GoL并不匹配。我已经尝试过我能做的一切,但它并不匹配。
此外,如果有人知道如何将它变成无限的平面或者自己包裹,我有兴趣看到它用我的代码实现!
运行JSFiddle:http://jsfiddle.net/jGkKF/2/
相关代码:
检查周围细胞的活细胞:(第28行)
var x2 = x+1, x3 = x-1, y2 = y+1, y3 = y-1; // Math
if(tC[x][y3] !== undefined && tC[x][y3]) ne++; // T
if(tC[x][y2] !== undefined && tC[x][y2]) ne++; // TR
if(tC[x2] !== undefined) {
if(tC[x2][y]) ne++; // R
if(tC[x2][y3] !== undefined && tC[x2][y3]) ne++; // BR
if(tC[x2][y2] !== undefined && tC[x2][y2]) ne++; // B
}
if(tC[x3] !== undefined) {
if(tC[x3][y]) ne++; // BL
if(tC[x3][y3] !== undefined && tC[x3][y3]) ne++; // L
if(tC[x3][y2] !== undefined && tC[x3][y2]) ne++; // TL
}
算法:(第50行)
if(cell && (ne < 2 || ne > 3)) cell = 0; // Over- or under- populated?
else if(!cell && ne == 3) cell = 1; // Give life?
答案 0 :(得分:1)
一些项目:
答案 1 :(得分:0)
声明
tC = cells;
不会制作单元格数组的副本。它只是创建了对完全相同的数组的第二个引用。因此,稍后,当你这样做时:
cells[x][y] = cell; // Setting the cell
正在修改循环正在查看的相同数组。
此外,在您检查邻居的循环中,您已经编码了与undefined
的精确比较。但是,您的其余代码似乎用0
填充空单元格。