0

我得到了这个用 html/css/javascript 编写的扫雷游戏,它通常运行得很好,我在里面放了一个计时器,计时器总是运行平稳。

但是,当我玩游戏时,它开始随机增加 2(这意味着计时器以某种方式被触发了两次而没有超时工作)。据我所知,它从未发生过,我尝试过但无法再次发生,这是一个链接,相关代码如下:

function timer() {
    if ( gameOn ) {
        timePast++;
        document.getElementById("timer").innerHTML = timePast;
        timeoutID = window.setTimeout(timer, 1000);
    } 
}

计时器在我的start()函数中设置:

timePast = 0;
    //start the timer if it was stopped
if ( !gameOn )
    timeoutID = window.setTimeout(timer, 1000);

这是我的gameOn变量的所有实例(除了上面的两个和 if 语句):

    var gameOn = false; //(line 6) initialization
    gameOn = true; //(line 85) in start() - after the above code
    gameOn = false;//(line 154) in checkWin() function
    gameOn = false;//(line 239) in gameOver() function (triggers when game is lost)

以下是上述功能的部分(可能相关的部分):

function bombCheck(event) {
    var boxNum = parseInt(event.id);
    if ( bomb.indexOf(boxNum) >= 0 ) {
      gameOver();   }}

 gameOver(){gameOn = false;}

现在checkWin:

    function checkWin() {
        if ( flippedCount === ( cellAmount - bombAmount ) ) { gameOn = false; }}

开始触发:

   <input type="button" class="MtopSmall" value="start!" name = "startButton" onclick = "start();" >
 start(){gameOn = true;}

我知道我应该改变setTimeout并且setInterval我会(有一天),但我想了解这里有什么问题。

我对javascript有相当不错的理解,我完全被难住了,如果有人能告诉我为什么会发生这种情况和/或如何解决它,那会很酷。

4

0 回答 0