Typescript:如何在有限的时间内捕获键盘事件

Typescript: how to capture keyboard events for a limited time

我正在编写某种视频游戏,其中玩家轮流 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);

排队等到 N 秒过去。

编辑:

另外,我在考虑 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
}

您可以在 N 秒后使用 setTimeout 函数取消绑定 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);
}