如何在Javascript猜谜游戏中设置计时器?

如何在Javascript猜谜游戏中设置计时器?,javascript,timer,Javascript,Timer,我的Javascript代码有一个问题,涉及在随机猜测游戏中设置计时器。我必须给用户5秒钟的时间来猜数字。用户可以在5秒内猜测多次。如果时间用完,我必须提示用户是否要再次播放或退出。如果是,我必须回到游戏中。我的计时器坏了。如果你们能帮忙,我将不胜感激。多谢各位 <script type="text/javascript"> var randomNumber = getRandomNumber(6); var userGuess; var guessCou

我的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>

var randomNumber=getRandomNumber(6);
var-userGuess;
var计数器=0
功能定时器(上){
var timeID=设置间隔(getRandomNumber,5000);
}
函数getRandomNumber(上){
var number=Math.floor(Math.random()*upper)+1;
返回号码;
}
while(userGuess!=随机数){
userGuess=prompt('我想到的是一个介于1和6之间的数字。\n它是什么?');
计数器+=1;
if(parseInt(userGuess)>随机数){
警报(“重试!您的号码太高”);
}else if(parseInt(userGuess)
由于
提示符
冻结了内部计时器(在Chrome、Opera和Safari中),我们无法为用户的响应设置超时。一种方法是使用html
而不是
提示符
。在这种情况下,
setTimeout
可以根据需要工作

const input=document.getElementById(“输入”);
const getRandomNumber=(上限)=>Math.floor(Math.random()*上限)+1;
常数上限=10;
让猜测计数器=0;
设randomNumber=getRandomNumber(上限);
让定时器;
常量播放=()=>{
if(定时器)清除超时(定时器);
input.value=“”;
猜测计数器++;
计时器=设置超时(()=>{
如果(确认(“时间到了,请重新播放?”){
randomNumber=getRandomNumber(上限);
猜测计数器=0;
play();
}
}, 5000);
}
document.getElementById(“question”).innerHTML=`我想到的是一个介于1和${upper}之间的数字。这是什么?`;
document.getElementById(“猜测”).addEventListener(“单击”,()=>{
让userGuess=parseInt(input.value);
如果(用户猜测>随机数){
警报(“重试!您的号码太高”);
play();
}else if(用户猜测<随机数){
警报(“重试!您的号码太低”);
play();
}else if(userGuess==随机数){
if(确认(`你猜到了号码!花了你:${guessCounter}次尝试。是否再次播放?`)){
randomNumber=getRandomNumber(上限);
猜测计数器=0;
play();
}否则{
清除超时(计时器);
}
}
});
play()


Guess
我建议将游戏移动到一个函数中并命名它,例如“startGame”。然后,当游戏结束时,您可以使用计时器重新启动游戏

函数getRandomNumber(上){
var number=Math.floor(Math.random()*upper)+1;
返回号码;
}
函数startName(){
var randomNumber=getRandomNumber(6);
var-userGuess;
var计数器=0;
再次播放;
while(userGuess!=随机数){
userGuess=prompt('我想到的是一个介于1和6之间的数字。\n它是什么?');
计数器+=1;
if(parseInt(userGuess)>随机数){
警报(“重试!您的号码太高”);
}else if(parseInt(userGuess)startGame()您的代码流是错误的。没有任何东西调用计时器方法,因此setInterval永远不会启动。你需要在开始时生成一个随机数,开始用户循环,并让计时器运行,5秒后调用一个在提示下显示游戏的方法。当计时器不工作时,你的确切意思是什么?您只是将getRandomNumber传递给setInterval。你应该试试这样的东西。setInterval(函数(){getRandomNumber(6)},5000)。另外,您需要调用计时器来实际启动它。你哪里都不会那样做。