2016-11-07 2 views
0

나는 platformer 게임을 만들고 있고 플레이어가 동전을 모두 모으면 다음 레벨로 간다. 화면에 타이머를 추가하면 레벨이 0이되면 다시 시작할 수있다. 이것은 플레이어가 용암에 닿으면 레벨을 다시 시작하면 처리하는 코드의 섹션입니다.게임에 타이머를 추가하려면 어떻게합니까?

Level.prototype.playerTouched = function(type, actor) { 
    if (type == "lava" && this.status == null) { 
    this.status = "lost"; 
    this.finishDelay = 1; 
    } else if (type == "coin") { 
    this.actors = this.actors.filter(function(other) { 
     return other != actor; 
    }); 
    if (!this.actors.some(function(actor) { 
      return actor.type == "coin"; 
     })) { 
     this.status = "won"; 
     this.finishDelay = 1; 
    } 
    } 
}; 

function runGame(plans, Display) { 
    function startLevel(n) { 
    runLevel(new Level(plans[n]), Display, function(status) { 
     if (status == "lost") 
     startLevel(n); 
     else if (n < plans.length - 1) 
     startLevel(n + 1); 
     else 
     console.log("You win!"); 
    }); 
    } 
    startLevel(0); 
} 
+1

확인 ['setTimeout'] (https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout). startLevel()에서 일찍 호출하고 싶을 것이다. 완료되면'clearTimeout()'을 잊지 마라. – rphv

답변

0

하나의 옵션은 setInterval을 사용하고 있습니다.

여기 샘플은 남은 시간의 변수를 만들고, 타이머의 모든 호출을 줄일 수있는이 사용 http://www.w3schools.com/js/js_timing.asp

<!DOCTYPE html> 
<html> 
<body> 

<p>A script on this page starts this clock:</p> 

<p id="demo"></p> 

<script> 
var myVar = setInterval(myTimer, 1000); 

function myTimer() { 
    var d = new Date(); 
    document.getElementById("demo").innerHTML = d.toLocaleTimeString(); 
} 
</script> 

</body> 
</html> 

에서 예제 코드입니다. 이 같은

뭔가 : 대한 문서 밖으로

var myVar = setInterval(myTimer, 1000); 

var timeLeft = 10; 

function myTimer() { 

    if (timeLeft > 0){ 
     timeLeft = timeLeft - 1; 
     document.getElementById("demo").innerHTML = timeLeft;  
    }else{ 
     document.getElementById("demo").innerHTML = "Game over";  
    } 

} 
+0

나는 이것을 구현하려고 노력하고 있지만 타이머가 게임 위에있을 때 카운트 다운하기 전에 잠시 동안 실제 시간을 보여줄 때도 작동하지 않습니다. 또한 리셋을하는 방법을 모르겠습니다. 레벨이 0이되면 – Lopez78

관련 문제