fix duplicated letters

This commit is contained in:
Evan You 2022-01-23 22:34:31 +08:00
parent 7853b82a4e
commit da17da906f

View File

@ -67,29 +67,37 @@ function clearTile() {
function completeRow() { function completeRow() {
if (currentRow.every((tile) => tile.letter)) { if (currentRow.every((tile) => tile.letter)) {
const word = currentRow.map((tile) => tile.letter).join('') const guess = currentRow.map((tile) => tile.letter).join('')
if (!allWords.includes(word) && word !== answer) { if (!allWords.includes(guess) && guess !== answer) {
shake() shake()
showMessage(`Not in word list`) showMessage(`Not in word list`)
return return
} }
let correct = true let correct = true
let answerLetters: (string | null)[] = answer.split('')
// first pass: mark correct ones
currentRow.forEach((tile, i) => { currentRow.forEach((tile, i) => {
if (answer.includes(tile.letter)) { if (answerLetters[i] === tile.letter) {
if (answer[i] === tile.letter) {
tile.state = letterStates[tile.letter] = LetterState.CORRECT tile.state = letterStates[tile.letter] = LetterState.CORRECT
} else { answerLetters[i] = null
}
})
// second pass: mark the rest
currentRow.forEach((tile, i) => {
if (answerLetters[i]) {
if (answerLetters.includes(tile.letter)) {
tile.state = LetterState.PRESENT tile.state = LetterState.PRESENT
answerLetters[i] = null
if (!letterStates[tile.letter]) { if (!letterStates[tile.letter]) {
letterStates[tile.letter] = LetterState.PRESENT letterStates[tile.letter] = LetterState.PRESENT
} }
correct = false correct = false
}
} else { } else {
tile.state = letterStates[tile.letter] = LetterState.ABSENT tile.state = letterStates[tile.letter] = LetterState.ABSENT
correct = false correct = false
} }
}
}) })
if (correct) { if (correct) {
// yay! // yay!