2017-04-19 63 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