2017-04-19 68 views
0

我用javascript制作了一个项目的游戏(这里是链接:https://cams03.github.io/canvus/page_accueil.html如何在使用javascript制作的游戏中提升速度?

现在我想通过提高飞行物体的速度来改善游戏。我尝试了很多东西,总会遇到问题。这里是我的代码示例(如果需要,我可以提供完整的代码,但它很长)。变量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)不能使用,因为如果赶上奖励你的分数,而不受5通过增加从3到7(例如)这样的平等赢得”存在并且条件不会被执行。 任何人都可以帮助我吗?我希望我的解释很清楚,非常感谢您的帮助!

+3

首先,不要用'0'来加前缀。这让JavaScript认为它们是十六进制数字。看看你自己:'console.log(0700,700)' – Cerbrus

+0

你对'0700'和'0500'的使用似乎是可疑的。您是否尝试使用'700'和'500'? –

+0

不,我不知道我可以使用700,我学会了写0700,但它可能是错误的方式,我要纠正它谢谢! – Cams03

回答

0

这应该是相对简单的修复。

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

经过清除间隔后,还可以取消设置定时器变量。

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

+0

好的,谢谢!我将尝试现在更改代码并查看它是否有效。其实我用&&试过条件,但它是'if(cpt> = 5 && cpt <= 20)',它不起作用 – Cams03

+0

我尝试了代码,当我打到5时它似乎首先工作,然后行星是到处冒出,不会消失,所以我在屏幕上有20颗行星。我不知道为什么,似乎clearInterval或clearTimeOut不起作用。而且,当最终得分的窗口出现时,spawnPlanet功能不会停止,行星保持弹出状态。你知道如何解决它吗?也许我不应该使用像planetTimer2,planetTimer3等多个变量,只能改变planetTimer? – Cams03