如何在Javascript中将计时器放入猜谜游戏中?

时间:2018-02-02 03:29:17

标签: javascript timer

我的Javascript代码存在问题,涉及将计时器放入随机猜谜游戏中。我必须给用户5秒钟来猜测这个数字。用户可以在5秒的范围内多次猜测。如果时间用完了,我必须提示用户是否要再次播放或退出。如果是的话,我必须回到游戏中。我的计时器不工作。如果你们中的任何人能提供帮助,我会非常感激。谢谢。

<script type="text/javascript">
    var randomNumber = getRandomNumber(6); 
    var userGuess; 
    var guessCounter = 0 

    function timer (upper) {
        var timeID = setInterval (getRandomNumber, 5000);
    }

    function getRandomNumber (upper) {
        var number = Math.floor(Math.random()*upper) +1; 
        return number;
    }
    while (userGuess != randomNumber){
        userGuess = prompt('I am thinking of a number between 1 and 6. \n What is it? '); 
        guessCounter += 1; 

        if (parseInt(userGuess) > randomNumber) {
            alert('Try again! Your number is too high ' );
        }else if (parseInt(userGuess) < randomNumber) {
            alert('Try again! Your number is too low ');
        }else if(parseInt(userGuess) == randomNumber) {
            break;
        }
    }
    alert('You have guessed the number! It took you: \n ' +  guessCounter +  ' tries. '); 
</script>

3 个答案:

答案 0 :(得分:0)

使用提示5秒后你是否需要重启游戏?

如果是,则在设置间隔功能中为提示调用另一个函数,并在单击确定时重新启动

如果我错了,请纠正我

答案 1 :(得分:0)

var express = require('express');冻结内部计时器(在Chrome,Opera和Safari中)时,我们无法为用户的响应设置超时。一种方法是使用html prompt而不是<input>。在这种情况下,prompt可以根据需要运行。

&#13;
&#13;
setTimeout
&#13;
const input = document.getElementById("input");
const getRandomNumber = (upper) => Math.floor(Math.random() * upper) + 1;
const upper = 10;
let guessCounter = 0;
let randomNumber = getRandomNumber(upper);
let timer;

const play = () => {
    if (timer) clearTimeout(timer);
    input.value = "";
    guessCounter++;
    timer = setTimeout(() => {
        if (confirm("Time is out. Play again?")) {
            randomNumber = getRandomNumber(upper);
            guessCounter = 0;
            play();
        }
    }, 5000);
}

document.getElementById("question").innerHTML = `I am thinking of a number between 1 and ${upper}. What is it?`;

document.getElementById("guess").addEventListener("click", () => {
    let userGuess = parseInt(input.value); 
    if (userGuess > randomNumber) {
        alert('Try again! Your number is too high');
        play();
    } else if (userGuess < randomNumber) {
        alert('Try again! Your number is too low ');
        play();
    } else if (userGuess === randomNumber) {
        if (confirm(`You have guessed the number! It took you: ${guessCounter} tries. Play again?`)) {
            randomNumber = getRandomNumber(upper);
            guessCounter = 0;
            play();
        } else {
            clearTimeout(timer);
        }
    }
});

play();
&#13;
&#13;
&#13;

答案 2 :(得分:0)

我建议您将游戏移动到一个功能中并命名,例如&#34; startGame&#34 ;.然后,当游戏结束时,您可以实施计时器以重新启动游戏。

&#13;
&#13;
function getRandomNumber(upper) {
    var number = Math.floor(Math.random()*upper) + 1; 
    return number;
}

function startGame() {
    var randomNumber = getRandomNumber(6); 
    var userGuess; 
    var guessCounter = 0;
    var playAgain;
    
    while (userGuess != randomNumber){
        userGuess = prompt('I am thinking of a number between 1 and 6. \n What is it? '); 
        guessCounter += 1; 

        if (parseInt(userGuess) > randomNumber) {
            alert('Try again! Your number is too high ' );
        } else if (parseInt(userGuess) < randomNumber) {
            alert('Try again! Your number is too low ');
        } else if (parseInt(userGuess) == randomNumber) {
            break;
        }
    }
    alert('You have guessed the number! It took you: \n ' +  guessCounter +  ' tries. '); 
    
    if (confirm('Do you want to play again?')) {
        setInterval(startGame, 5000); // Start a new game in 5 seconds
    }
}

startGame();
&#13;
&#13;
&#13;