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,28 +67,36 @@ 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 answerLetters[i] = null
} else { }
})
// 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 {
tile.state = letterStates[tile.letter] = LetterState.ABSENT
correct = false
} }
} else {
tile.state = letterStates[tile.letter] = LetterState.ABSENT
correct = false
} }
}) })
if (correct) { if (correct) {