From af8342fabe268eb734218356c53ab62a63f6e634 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sun, 23 Jan 2022 22:52:26 +0800 Subject: [PATCH] more logic fix --- src/Game.vue | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Game.vue b/src/Game.vue index d3cd7d5..d99009e 100644 --- a/src/Game.vue +++ b/src/Game.vue @@ -74,8 +74,7 @@ function completeRow() { return } - let correct = true - let answerLetters: (string | null)[] = answer.split('') + const answerLetters: (string | null)[] = answer.split('') // first pass: mark correct ones currentRow.forEach((tile, i) => { if (answerLetters[i] === tile.letter) { @@ -83,23 +82,24 @@ function completeRow() { 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 + // second pass: mark the present + currentRow.forEach((tile) => { + if (answerLetters.includes(tile.letter)) { + tile.state = LetterState.PRESENT + answerLetters[answerLetters.indexOf(tile.letter)] = null + if (!letterStates[tile.letter]) { + letterStates[tile.letter] = LetterState.PRESENT } } }) - 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! allowInput = false showMessage(