javascript - 如何在我的 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--;
}
解决方案
尝试使用for
循环和使用throw
/ reject
& catch
(或break
)。此外,Promise
s 在这里可能很有用。
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 。
推荐阅读
- mysql - Mysql Group by 3 个带计数的字段
- solr - 加载类“solr.VelocityResponseWriter”时出错
- mongodb - 一个集合中的两个 ID 字段
- matlab - 更改 Matlab 条形图中条形元素的颜色?
- swift - 带有图像的 UIBarButton 项目覆盖 UINavigationBar 标题
- css - CSS如何在没有负边距的情况下偏移第一个字母?
- python - 熊猫数据框到频率矩阵
- c++ - 使用固定字段宽度最大化 ASCII 中的浮点精度
- amazon-web-services - 基于电子邮件域创建 AWS IAM 用户
- python - 在 Tkinter 中嵌入 matplotlib 图的示例