2012-10-10 8 views
0

저는 프로그래밍 초보자입니다. 삶의 게임의 실행에서 초기 패턴 만 나타나고 있습니다. 여기 그리드를 사용하지 않았습니다. 그것을 위해 직사각형의 크기를 조정했습니다. 코드가 깔끔하지 않습니다. 친절하게 제 코드 작업을위한 제안을하십시오.자바 스크립트의 라이프 코드 게임에서 오류가 발생했습니다.

<!DOCTYPE html> 
<html> 
    <body> 
    <canvas id="myCanvas" width="500" height="500" > 
    </canvas> 
    <script type="text/javascript"> 
    <!-- 
        var canvas = document.getElementById("myCanvas"); 
        var ctx = canvas.getContext("2d"); 
     var width= canvas.width; 
     var height = canvas.height; 

     function initial(){ 
        var ctx = canvas.getContext("2d"); 
     for(var i=0;i<width;i+=10){ 
      for(var j=0;j<height;j+=10){ 
      ctx.fillStyle="white"; 
      if(Math.random()<0.05){ 
       ctx.fillStyle="black"; 
      } 
      ctx.fillRect(i,j,9,9); 
      } 
     } 
     } 

     function fut(){ 
     var imageData = ctx.getImageData(0,0,width, height); 
     var data = imageData.data; 
     var future = []; 
     for(var y=0;y<height;y+=10){ 
      for(var x=0;x<width;x+=10){ 
      var dead = data[((width/10*y)+x)*4]; 
      var numb=0; 
      numb = life_around(x,y); 
      check_life(numb, dead,future); 
      } 
     } 

      ctx.clearRect(0, 0, width, height); 
      //ctx.putImageData(imageData, 0, 0); 
     for(var i=0;i<width;i+=10){ 
      for(var j=0;j<height;j+=10){ 
      var black =future[(width/10*y)+x)*4]; 
      ctx.fillStyle="white"; 
      if(black == 0){ 
       ctx.fillStyle="black"; 
      } 
      ctx.fillRect(i,j,9,9); 
      } 
     } 

     setTimeout(fut,1000); 
     function check_life(numb, dead,future){ 
      if (dead == 0){ 
      if((numb ==2) || (numb == 3)){ 
       future.push(0); 
       future.push(0); 
       future.push(0); 
       future.push(255); 
      } 
      } 
      if ((dead!=0)&&(numb == 3)){ 
      future.push(0); 
         future.push(0); 
         future.push(0); 
         future.push(255); 
      } 
      if((dead!=0)&&(numb!=3)){ 
         future.push(255); 
         future.push(255); 
         future.push(255); 
         future.push(255); 
      } 
     } 

     function life_around(x,y){ 
      for(var i=-10;i<20;i+=10){ 
      for(var j=-10;j<20;j+=10){ 
       if((i!=0) || (j!=0)){ 
       var data_index=((width/10*(y+i))+(x+j))*4; 
       if((data_index >= 0) && (data[data_index]==0)){ 
        numb++; 
       } 
       } 
      } 
      } 
      return numb; 
     } 
     } 

    function run(){ 
     initial(); 
     fut(); 
    } 
    //--> 
    </script> 
    <p>Game of life</p> 

    <form action=""> 
    <input type="button" value="initial" onClick="initial()" > 
    <input type="button" value="run" onClick="run()" > 
    </form> 
    </body> 
</html> 
+0

PLS가 만드는 바이올린 http://jsfiddle.net – XMen

+0

당신은 기쁘게도 표시되는 오류 메시지를 게시 할 수 – Christoph

답변

0

는 선 (43)는 "("추가 :

var black =future[((width/10*y)+x)*4]; 
+0

덕분에, 내가? 그것을 바로 잡았다. – user1497756

관련 문제