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() {
if (currentRow.every((tile) => tile.letter)) {
const word = currentRow.map((tile) => tile.letter).join('')
if (!allWords.includes(word) && word !== answer) {
const guess = currentRow.map((tile) => tile.letter).join('')
if (!allWords.includes(guess) && guess !== answer) {
shake()
showMessage(`Not in word list`)
return
}
let correct = true
let answerLetters: (string | null)[] = answer.split('')
// first pass: mark correct ones
currentRow.forEach((tile, i) => {
if (answer.includes(tile.letter)) {
if (answer[i] === tile.letter) {
if (answerLetters[i] === tile.letter) {
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
answerLetters[i] = null
if (!letterStates[tile.letter]) {
letterStates[tile.letter] = LetterState.PRESENT
}
correct = false
}
} else {
tile.state = letterStates[tile.letter] = LetterState.ABSENT
correct = false
}
}
})
if (correct) {
// yay!