From d6f1449d232d7aa9cbd2abe56288ac6932e3b832 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sun, 10 Aug 2025 14:23:08 +0000 Subject: [PATCH] Fix guess count Track and display questions and guesses made by the user. --- src/components/GuessingGame.tsx | 21 +++++++++++++++++-- .../guessing-game/QuestionGuessingMode.tsx | 10 ++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/components/GuessingGame.tsx b/src/components/GuessingGame.tsx index 6e31dcf..10c6061 100644 --- a/src/components/GuessingGame.tsx +++ b/src/components/GuessingGame.tsx @@ -46,6 +46,9 @@ const GuessingGame: React.FC = ({ showSocialShare = true }) = const [questionsAsked, setQuestionsAsked] = useState([]); const [userScore, setUserScore] = useState(0); const [currentSearchIndex, setCurrentSearchIndex] = useState(0); + + // Question mode stats + const [questionModeStats, setQuestionModeStats] = useState<{questionsAsked: number, finalGuesses: number}>({questionsAsked: 0, finalGuesses: 0}); const maxRange = range[0]; @@ -296,6 +299,7 @@ const GuessingGame: React.FC = ({ showSocialShare = true }) = setQuestionsAsked([]); setUserScore(0); setCurrentSearchIndex(0); + setQuestionModeStats({questionsAsked: 0, finalGuesses: 0}); }; const getStrategyDescription = (strategy: ComputerStrategy) => { @@ -482,7 +486,10 @@ const GuessingGame: React.FC = ({ showSocialShare = true }) = setUserGuess={setUserGuess} onGuess={handleGuess} onUpdateValidNumbers={setValidNumbers} - onWin={() => setGameState('won')} + onWin={(questionsAsked, finalGuesses) => { + setQuestionModeStats({questionsAsked, finalGuesses}); + setGameState('won'); + }} /> )} @@ -553,11 +560,21 @@ const GuessingGame: React.FC = ({ showSocialShare = true }) =

Game Complete!

- {gameMode === 'user-guesses' ? ( + {gameMode === 'user-guesses' && userGuessingMode === 'standard' ? (

You found the number {secretNumber} in{' '} {guesses.length} guesses!

+ ) : gameMode === 'user-guesses' && userGuessingMode === 'questions' ? ( +
+

+ You found the number with {questionModeStats.questionsAsked} questions and{' '} + {questionModeStats.finalGuesses} final guesses! +

+

+ Total interactions: {questionModeStats.questionsAsked + questionModeStats.finalGuesses} +

+
) : (

diff --git a/src/components/guessing-game/QuestionGuessingMode.tsx b/src/components/guessing-game/QuestionGuessingMode.tsx index 8ce7ac2..d30855a 100644 --- a/src/components/guessing-game/QuestionGuessingMode.tsx +++ b/src/components/guessing-game/QuestionGuessingMode.tsx @@ -14,7 +14,7 @@ interface QuestionGuessingModeProps { setUserGuess: (value: string) => void; onGuess: (guessValue?: number) => void; onUpdateValidNumbers: (newValidNumbers: Set) => void; - onWin: () => void; + onWin: (questionsAsked: number, finalGuesses: number) => void; } const QuestionGuessingMode: React.FC = ({ @@ -31,6 +31,7 @@ const QuestionGuessingMode: React.FC = ({ const [question, setQuestion] = useState(''); const [questionHistory, setQuestionHistory] = useState<{question: string, answer: string, understood: boolean}[]>([]); const [questionFeedback, setQuestionFeedback] = useState(''); + const [finalGuessCount, setFinalGuessCount] = useState(0); // Function to determine the optimal answer to keep search space as large as possible const getOptimalAnswer = (question: string): { understood: boolean, answer: boolean, questionType?: string, value?: number, isNegated?: boolean } => { @@ -314,8 +315,11 @@ const QuestionGuessingMode: React.FC = ({ return; } + const newFinalGuessCount = finalGuessCount + 1; + setFinalGuessCount(newFinalGuessCount); + if (validNumbers.size === 1 && validNumbers.has(guess)) { - onWin(); + onWin(questionHistory.length, newFinalGuessCount); } else if (validNumbers.has(guess)) { // Remove this number from valid numbers since it's not the answer const newValidNumbers = new Set(validNumbers); @@ -324,7 +328,7 @@ const QuestionGuessingMode: React.FC = ({ // Check if we're down to one number if (newValidNumbers.size === 1) { - onWin(); + onWin(questionHistory.length, newFinalGuessCount); } }