0

나는 Game of Life를 JavaScript로 재창조했습니다. 작동하지만 계산적으로 비효율적입니다. 세대 간 대기를위한이 기능이 있습니다.Game of Life 레크리에이션의 계산 효율성 향상

var speed = 500; //milliseconds 

function live() { 
    middleMan = setInterval(processGeneration, speed); 
    if (!dead) { 
     window.clearInterval(middleMan); 
     live(); 
    } 
} 

500 밀리 초 동안 아무런 변화가 없으면 계산 작업의 쓰나미가 발생합니다. 이것은 데드 타임과 지연의 아이러니 한 콤보를 제공합니다. 500ms를 어떻게 사용합니까?

+0

'setTimeout'을 사용하여'live()'를 호출하고 itslef 내부에서 호출하지 마십시오! – undone

답변

0

당신은

function live() { 
    processGeneration(); 
    if (!dead) { 
     setTimeout(live, speed); 
    } 
} 
live(); 

또는

function live() { 
    processGeneration(); 
    if (dead) { 
     clearInterval(timer); 
    } 
} 
var timer = setInterval(live, speed); 

또는

function live() { 
    processGeneration(); 
    if (!dead) { 
     requestAnimationFrame(live); 
    } 
} 
requestAnimationFrame(live); 

를 사용하지만 setInterval를 사용하는 경우, live 호출 할 때마다 speed보다 덜 걸릴해야한다는 것을 인식 할 수있다.

관련 문제