首页 > 解决方案 > 如何在我的 Simon 游戏中重新运行该功能?

问题描述

我非常有信心我有我的西蒙游戏背后的基本逻辑。但是,我在进入下一轮时遇到了问题。我曾尝试使用 if 语句和 while 循环,但都没有奏效。我应该如何进行?

简要说明:gameColors 是一个数组,其中包含所有随机颜色,这些颜色将在几轮中不断增加。变量 sequencelength 用于增加用户输入函数中使用的计数器,而变量 sequenceLengthInv 与之相反,从 gameColors.length 中减去得到 sequenceLength。

random sequence 显示颜色的随机序列,直到 sequenceLength 值。

JS:

if (sequenceLengthInv >= 0) {
   // have the game play the random sequence of colors
   for (var i = 0; i < gameColors.length - sequenceLengthInv; i++) {
       randomSequence();
   }


   //listens for the user's input
   for (var i = 0; i < color.length; i++) {
       userInput();
   }
sequenceLength++;
sequenceLengthInv--;
}

标签: javascript

解决方案


尝试使用for循环和使用throw/ reject& catch(或break)。此外,Promises 在这里可能很有用。

async function playGame(availableColors, minColors, maxColors) {
    await wait(333);

    var colors = Array.from({ length: maxColors }, () => randomChoice(availableColors));

    try {
        for (var i = minColors; i <= maxColors; i++) {
            console.log(colors.slice(0, i));
            await playRound(colors.slice(0, i));
        }

        alert('You win!');
    } catch (e) {
        if(e !== undefined) {
            throw e;
        }

        alert('You lose!');
    }
}

我修改过的(现在评论过的)代码可以在这里找到:https ://repl.it/@solly_ucko/InconsequentialRoastedMonitor 。


推荐阅读