如何提高使用javascript制作的游戏的速度?

时间:2017-04-19 07:43:24

标签: javascript

我用javascript制作了一个项目游戏(这里是链接:https://cams03.github.io/canvus/page_accueil.html

现在我想通过提高飞行物体的速度来改善游戏。我尝试了很多东西,总是有问题。这是我的代码示例(如果需要,我可以提供完整的代码,但它更长)。变量cpt是得分

let planetTimer2, planetTimer3, planetTimer4;

function level() {
 if (cpt == 5 ) {
    clearInterval(planetTimer);
    planetTimer2 = setInterval(spawnPlanet, 1000);
 }
 if (cpt == 20) {
    clearInterval(planetTimer2);
    planetTimer3 = setInterval(spawnPlanet, 0700);
 }
 if (cpt == 40) {
    clearInterval(planetTimer3);
    planetTimer4 = setInterval(spawnPlanet, 0500);
 }
}

function countdown() {

 level();   

 if (timeLeft < 0) {
     clearTimeout(timerId);
     clearTimeout(planetTimer);
     clearTimeout(planetTimer2);
     clearTimeout(planetTimer3);
     clearTimeout(planetTimer4);
     clearTimeout(bonusTimer);
     let paragraph = document.getElementById("result");
     if (cpt < 20) {
         paragraph.innerHTML = "Ton score est de : " + cpt + ". La       honte sur toi Maurice !!";
     } else if (cpt < 80) {
         paragraph.innerHTML = "Mouais ton score est de : " + cpt + ". Tu peux faire mieux mon vieux !";
     } else {
         paragraph.innerHTML = "Ton score est de : " + cpt + ". T'es un killer !!";
     }

     document.querySelector("h1").appendChild(paragraph);
     cover.classList.add("visible");
     popup.classList.add("visible");

 } else {
     timer.innerHTML = timeLeft;
     timeLeft--;
 }   

 };

let timerId = setInterval(countdown, 1000);
document.addEventListener("DOMContentLoaded", countdown());

rejouer.addEventListener("click", function () {
  cover.classList.remove("visible");
  popup.classList.remove("visible");
  cpt = 0;
  timeLeft = 30;
  countdown();
  timerId = setInterval(countdown, 1000);
  spawnPlanet();
  spawnBonus();
  planetTimer = setInterval(spawnPlanet, 2000);
  bonusTimer = setInterval(spawnBonus, 9000);


 });

问题是if (cpt == 5 )无法使用,因为如果你获得奖金,你的分数可以从3增加到7(例如)而不经过5,所以平等将不存在并且条件获胜不被执行。 有人可以帮我吗?我希望我的解释清楚,非常感谢你的帮助!!

1 个答案:

答案 0 :(得分:0)

这应该相对简单。

检查分数是否等于或大于将其与(5,20,40)进行比较的分数,并检查定时器是否仍在运行。

在clearinterval之后,还取消设置定时器变量。

function level() {
 if (cpt >= 5 && planetTimer) {
    clearInterval(planetTimer);
    delete planetTimer;
    planetTimer2 = setInterval(spawnPlanet, 1000);
 }
 if (cpt >= 20 && planetTimer2) {
    clearInterval(planetTimer2);
    delete planetTimer2;
    planetTimer3 = setInterval(spawnPlanet, 700);
 }
 if (cpt >= 40 && planetTimer3) {
    clearInterval(planetTimer3);
    delete planetTimer3;
    planetTimer4 = setInterval(spawnPlanet, 500);
 }
}

此外,在function countdown()中,您有几个clearTimeout来电。那些应该是clearInterval