more logic fix

This commit is contained in:
Evan You 2022-01-23 22:52:26 +08:00
parent da17da906f
commit af8342fabe

View File

@ -74,8 +74,7 @@ function completeRow() {
return return
} }
let correct = true const answerLetters: (string | null)[] = answer.split('')
let answerLetters: (string | null)[] = answer.split('')
// first pass: mark correct ones // first pass: mark correct ones
currentRow.forEach((tile, i) => { currentRow.forEach((tile, i) => {
if (answerLetters[i] === tile.letter) { if (answerLetters[i] === tile.letter) {
@ -83,23 +82,24 @@ function completeRow() {
answerLetters[i] = null answerLetters[i] = null
} }
}) })
// second pass: mark the rest // second pass: mark the present
currentRow.forEach((tile, i) => { currentRow.forEach((tile) => {
if (answerLetters[i]) {
if (answerLetters.includes(tile.letter)) { if (answerLetters.includes(tile.letter)) {
tile.state = LetterState.PRESENT tile.state = LetterState.PRESENT
answerLetters[i] = null answerLetters[answerLetters.indexOf(tile.letter)] = null
if (!letterStates[tile.letter]) { if (!letterStates[tile.letter]) {
letterStates[tile.letter] = LetterState.PRESENT letterStates[tile.letter] = LetterState.PRESENT
} }
correct = false
} else {
tile.state = letterStates[tile.letter] = LetterState.ABSENT
correct = false
}
} }
}) })
if (correct) { // 3rd pass: mark absent
currentRow.forEach((tile) => {
if (!tile.state) {
tile.state = LetterState.ABSENT
}
})
if (currentRow.every((tile) => tile.state === LetterState.CORRECT)) {
// yay! // yay!
allowInput = false allowInput = false
showMessage( showMessage(