JavaScript西蒙游戏checkAnswer()函数无需全数组匹配生效原理咨询
核心逻辑说明
这段代码采用的是逐位实时校验策略,而非等用户输入完本轮所有序列后再统一校验,因此不需要额外做全数组匹配:
- 每次用户点击任意颜色按钮,都会把选中颜色推入
userClickedPattern数组,同时立刻调用checkAnswer()校验刚输入的这一位,和gamePattern对应索引位置的颜色是否一致。 - 只要任意一位输入不匹配,会直接触发游戏结束逻辑,用户根本无法继续输入后续的颜色。
结合你举的示例验证
假设第4轮gamePattern = [red, blue, yellow, green],完整校验流程如下:
- 用户点击第1个颜色:
userClickedPattern长度为1,校验索引0位是否等于gamePattern[0](red),匹配则继续等待输入,不匹配直接结束游戏 - 用户点击第2个颜色:
userClickedPattern长度为2,校验索引1位是否等于gamePattern[1](blue),匹配则继续等待输入,不匹配直接结束游戏 - 用户点击第3个颜色:
userClickedPattern长度为3,校验索引2位是否等于gamePattern[2](yellow),匹配则继续等待输入,不匹配直接结束游戏 - 用户点击第4个颜色:
userClickedPattern长度为4,校验索引3位是否等于gamePattern[3](green),此时如果也匹配,说明前面3位已经全部通过校验,再判断双方长度相等,就可以直接进入下一轮。
补充说明
每次进入下一轮调用nextSequence()时,都会清空userClickedPattern数组,不会有上一轮输入的残留数据干扰本轮校验。
内容的提问来源于stack exchange,提问作者82gogolee
相关产品推荐
相关产品推荐

