如何在Simon游戏中重新运行该功能?

时间:2018-10-22 02:11:31

标签: javascript

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

简要说明:gameColors是一个数组,其中包含所有随机颜色,这些颜色将在多个回合中以递增的方式显示。变量sequencelength用于增加用户输入功能中使用的计数器,而变量sequenceLengthInv与之相反,从gameColors.length中减去以获得sequenceLength。

随机序列显示颜色的随机序列,直到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--;
}

1 个答案:

答案 0 :(得分:0)

尝试使用for循环并使用throw / rejectcatch(或break)。另外,Promise在这里可能会有用。

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