2016-09-06 4 views
0

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/

답변

2

: 도움이된다면

또한, 여기에 전체 프로그램의 codepen 링크입니다.

그런 다음 오래된 보드를 건너 새로운 하나를 사용하십시오. neibours와 상호 작용하는 동안 보드의 실제 상태를 파괴하기 때문에 하나의 보드 Conway's Game of Life

은 작동하지 않습니다.

초기 패턴은 시스템의 시드을 구성합니다. 1 세대 종자 출생 및 사망의 모든 셀에 동시에 위의 규칙을 적용하여 작성 동시에 발생하고,이 가끔라고 발생하는 이산 순간부터 (즉, 각 세대는 순수한 기능입니다 앞의 것 중 하나). 규칙은 반복적으로 적용되어 차세대를 만듭니다.

관련 문제