2016-11-07 4 views
0

Ich mache ein Jump'n'Run-Spiel und wenn der Spieler alle Münzen einsammelt, gehen sie zum nächsten Level, wie würde ich einen Timer auf dem Bildschirm hinzufügen, dass, wenn es 0 wird, der Level neu startet? Dies ist der Abschnitt meines Codes, der jetzt behandelt, wenn der Spieler das Level neu startet, wenn er Lava berührt.Wie füge ich einen Timer zu meinem Spiel hinzu?

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

Schauen Sie sich die Dokumentation für [ 'setTimeout'] (https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout). Sie werden es wahrscheinlich in 'startLevel()' früh aufrufen. Vergiss nicht 'clearTimeout()' wenn du fertig bist. – rphv

Antwort

0

Eine Option verwendet setInterval.

Hier ist ein Beispiel-Code von 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> 

dieser Verwendung als Probe können Sie eine Variable mit Ihrer Zeit gelassen erstellen, und jeden Anruf des Timers verringern.

Etwas wie folgt aus:

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

Ich versuche dies zu implementieren, aber ich kann es nicht zum Laufen bringen, wenn ich den Timer über dem Spiel setze und die aktuelle Zeit für eine Sekunde vor dem Countdown abspiele, weiß ich auch nicht wie ich es zurücksetzen soll Level, wenn es 0 erreicht. – Lopez78

Verwandte Themen