Estoy tratando de implementar una tabla de estadísticas en mi juego. Actualmente hay muchos errores: la racha funciona cuando la declaración if es verdadera, pero si acierto las palabras una vez, la racha aumenta y si acierto las palabras nuevamente, la racha aumenta. Cuando la declaración es falsa, la racha vuelve a 0 (lo que quiero que suceda).
El problema surge cuando vuelvo a acertar las palabras, la racha ya no se incrementa.
Además, el porcentaje de ganancias a veces funciona y, a veces, los cálculos son incorrectos. ¿He configurado la función incorrectamente?
if (guessedLetters.length == figureGuessWordsLength) { LSdataWordle.CurrrentStreak++; if (LSdataWordle.CurrrentStreak >= LSdataWordle.MaxStreak) { LSdataWordle.MaxStreak = LSdataWordle.CurrrentStreak; } LSdataWordle.WinPercentage = ( (parseFloat(LSdataWordle.MaxStreak) / parseFloat(LSdataWordle.DaysPlayed)) * 100 ).toFixed(2); window.localStorage.setItem("dataWordle", JSON.stringify(LSdataWordle)); } else { LSdataWordle.CurrrentStreak = 0; window.localStorage.setItem("dataWordle", JSON.stringify(LSdataWordle)); } }Una cosa que estoy viendo es que no estás recalculando el porcentaje de victorias en una pérdida. Esa sería la razón por la que a veces probablemente no tenga sentido para ti. Así que elimine eso por completo de las declaraciones if como a continuación, así como la llamada window.localstorage parece ser independiente de cualquier condición.
En cuanto a averiguar por qué no se incrementará en una victoria después de una racha de derrotas, eso se reducirá a qué es guessedLetters.length y qué es figureGuessWordsLength . coloque un punto de interrupción y vea si incluso coinciden con una victoria, porque la forma en que publicó su código es como si eso fuera seguro, pero puede que no lo sea.
if (guessedLetters.length == figureGuessWordsLength) { LSdataWordle.CurrrentStreak++; if (LSdataWordle.CurrrentStreak >= LSdataWordle.MaxStreak) { LSdataWordle.MaxStreak = LSdataWordle.CurrrentStreak; } } else { LSdataWordle.CurrrentStreak = 0; } LSdataWordle.WinPercentage = ( (parseFloat(LSdataWordle.MaxStreak) / parseFloat(LSdataWordle.DaysPlayed)) * 100 ).toFixed(2); window.localStorage.setItem("dataWordle", JSON.stringify(LSdataWordle));