我工作的一個遊戲: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
黃色的條件是什麼? –