Conways 게임을 제작했지만 알고리즘이 제대로 작동하지 않습니다. Js와 Jquery를 혼합하여 사용했습니다. 내 프로그램이하는 일은 셀에 의해 전체 보드 셀을 통과하고 이웃 셀을 확인하고 이웃 노드를 확인하여 각 셀에 게임 규칙을 적용하는 것입니다.Conways 생명 게임 알고리즘이 제대로 작동하지 않습니다.
function checkSquares() {
generation++;
document.getElementById('gen').innerHTML=generation;
for (var i = 100; i <= 6220; i++) {
if (squareArray[i][1] === 1) {
var total = squareArray[i + 81][1] + squareArray[i + 80][1] + squareArray[i + 79][1] + squareArray[i - 81][1] + squareArray[i - 80][1] + squareArray[i - 79][1] + squareArray[i + 1][1] + squareArray[i - 1][1];
switch (total) {
case 0:
case 1:
squareArray[i][1] = 0;
$('#square' + i).css("background-image", "url('http://www.fg-a.com/wallpapers/geo-shapes-black-1280.jpg')");
break;
case 4:
case 5:
case 6:
case 7:
case 8:
squareArray[i][1] = 0;
$('#square' + i).css("background-image", "url('http://www.fg-a.com/wallpapers/geo-shapes-black-1280.jpg')");
break;
}
}else{
var total = squareArray[i + 81][1] + squareArray[i + 80][1] + squareArray[i + 79][1] + squareArray[i - 81][1] + squareArray[i - 80][1] + squareArray[i - 79][1] + squareArray[i + 1][1] + squareArray[i - 1][1];
switch(total){
case 3:
squareArray[i][1] = 1;
$('#square' + i).css("background-image", "url('https://c1.staticflickr.com/3/2942/15323841455_6c64757dbd_b.jpg')");
break;
}
}
}
eliminate();
}
한마디로 무엇을 위의 코드가하는 일은, 사각형을 그 인접 셀 것 확인 여부 세포의 생사를 결정하는 경우 - 다른 문을 사용한다 : 여기에 대한 코드입니다.
이제 문제가 무엇인지 알 수 있습니다. 예를 들어 이와 같은 간단한 패턴을 : 내 코드에서 어떻게됩니까
cell here dies ----> []
new cell born here --> [] <-- new cell born here
cell here dies ----> []
은 다음과 같습니다
checks this cell, only one neighbour so it dies ---> []
When it comes to this cell it has only one neighbour because above -> []
neighbour died. Therefore it dies.
No neighbours, so this dies -----------------------> []
그래서 확실한 해결책은 어떻게 든 전체 패턴을 확인하고 셀인지 여부를 결정하는 것입니다 살거나 죽는 것. 그러나 한 번에 여러 개의 세포를 어떻게 확인할 수 있습니까? 당신은 오래된 보드를 유지하고 규칙에 새로운 보드 (라는 세대)를 생성 할 필요가
http://codepen.io/Phantom-Intruder/pen/BLaBPG/