Javascript 如何在用户输入上设置计时器?
我正在尝试制作一个炸弹拆除迷你游戏,在游戏中,你会得到4种随机颜色,你需要切断正确的电线才能获胜。我现在遇到的问题是如何得到它,所以每个部分都有一个计时器,需要玩家输入要剪切的颜色,如果计时器用完,玩家就会失败 我觉得我使用setTimeout是错误的,我不知道如何让它以我想要的方式工作Javascript 如何在用户输入上设置计时器?,javascript,Javascript,我正在尝试制作一个炸弹拆除迷你游戏,在游戏中,你会得到4种随机颜色,你需要切断正确的电线才能获胜。我现在遇到的问题是如何得到它,所以每个部分都有一个计时器,需要玩家输入要剪切的颜色,如果计时器用完,玩家就会失败 我觉得我使用setTimeout是错误的,我不知道如何让它以我想要的方式工作 const asdf = require('readline').createInterface({ input: process.stdin, output: process.
const asdf = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
asdf.question('What will you cut?', wire => { //First part where you are given 4 colors
setTimeout(asdf.question, 7000, console.log("asdf"))
if (!allowedColors.includes(wire)) {
console.log("You need to pick one of the 4 colors!");
return;
}
console.log(`You cut ${wire}!`);
asdf.close();
ruleEnforcer(wire, fourRandomColors, f);
})
你有一些东西需要调整:
question
的回调函数中的setTimeout
,因此当用户键入颜色并按enter键时,计时器将启动setTimeout
将在7000ms后调用函数asdf.question
,并将console.log(“asdf”)
作为被调用函数的参数传递。你应该再看一次setTimeout
是异步的,因此如果你想在计时器用完时停止游戏,你的整个游戏也应该是异步的const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
// start game and react to callback
startGame((win) => {
readline.close()
if(win) {
console.log('you won')
} else {
console.log('you lost')
}
})
function startGame(callback) {
// set timer when game starts, if it runs out player loses -> call callback false
let timer = setTimeout(() => {
callback(false)
}, 7000);
readline.question('What will you cut?', wire => {
// stop timer from running when player enters a color
clearTimeout(timer);
// wire is correct and player won the game -> call callback true
callback(true)
})
}
您是否尝试在7秒后记录“asdf”?如果是这样,它的setTimeout(console.log(“asdf”),7000)