我工作的一个游戏:http://codepen.io/abdulahhamzic/pen/xVMXQa复杂的字符串匹配在JavaScript
游戏由玩家猜一个字,他们只有五次尝试猜它。如果玩家字中的一个字母在适当的位置,那么它应该变成绿色。如果字中有一个字母,但不是在正确的地方,它应该涂成红色,以提示玩家该字母是否存在,但应该放在字词的其他位置。我用这部分代码来实现该功能:
if (userWord[i].toUpperCase() == word[i]){
document.getElementsByClassName("letters")[input].children[i].style.background = "green";
}
else if (word.indexOf(userWord[i].toUpperCase()) > -1){
document.getElementsByClassName("letters")[input].children[i].style.background = "red";
}
的问题是,当玩家输入一个包含两个或两个以上相同的字母的单词正确的字包含更少的那封信的,只有那封信在确切的地方应该是绿色的,而其他字母不应该是红色的,因为这意味着该信件有多次。例如:
- 如果字是“ABBBB”和玩家进入“AAAAC”,只有“AAAAC”的第一个“A”应保持绿色和其他的“A”的应保持黄色,而不是变红。
- 如果单词是“ABABB”,玩家输入“ACBAA”,则第一个“A”应该保持绿色,只有第二个“A”应该是红色,而不是最后一个“A”这个词里只有两个“A”。另外,“B”当然应该是红色的。
- 如果单词是“ABABA”并且玩家输入“AAAAA”,那么只有第一个,第三个和最后一个“A”应该是绿色的,但其他“A”应该保持黄色而不是变红。
所以,这些都是一些例子。我想你现在已经明白了。我真的无法弄清楚如何正确实现这个功能。
@野生寡妇我认为社会意外删除您的修改建议后,我做了一个真的很小一个......我们对此深感抱歉,我会尝试让他们现在... – webeno
@Abdulah我已删除你的问题中的一些我认为没有意义的文字是相关的,如果我有点过于严格,抱歉,你可以按你认为合适的方式回复它。在你就不同问题提出不同问题的问题上,我认为这是最好的方法;在同一个问题中询问所有问题会使其非常混乱,并且可能最终因此而关闭...... – webeno
黄色的条件是什么? –