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