我正在编写某种类型的视频游戏,玩家轮流N秒,在N秒内他们可以输入键盘输入。一旦N秒过去,输入的输入将被返回(例如在数组中),处理后将执行一些操作。
执行流程类似于以下内容:
while (!gameOver) {
// do some stuff like knowing who's player turn is it
var enteredInput = captureKeyboardInputsFor(seconds);
// process input & do actions
}
我确实已经很好地定义了游戏逻辑,但是我试图弄清楚如何使用TypeScript执行此操作,保持我的循环游戏同步(当玩家轮流玩),拥有
var enteredInput = captureKeyboardInputsFor(seconds);
另外,我正在考虑拥有CPU播放器的可能性。在这种情况下,不需要等待或捕获输入:
while (!gameOver) {
// do some stuff like knowing who's player turn is it
var enteredInput;
if (player.isHuman()) {
enteredInput = captureKeyboardInputsFor(seconds);
} else {
enteredInput = calculateRandomCPUPlayerInput();
}
// process input & do actions
}
答案 0 :(得分:2)
使用setTimeout函数传递N秒后,您可以取消绑定captureKeyboardInputs侦听器,如下所示。这是你在找什么:
let fn = () => {
// unbind capture keys event
// process input & do actions
};
let a = setTimeout(this.fn, seconds * 1000);
如果你需要修改它,那么你可以这样做:
clearTimeout(a);
if (isProcessNow) {
this.fn();
} else {
a = setTimeout(this.fn, newSeconds * 1000);
}