From 0f9588cb84a93981103c7dc05c279832d9bdff43 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 12 Jul 2026 17:13:24 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Palette:=20Improve=20score=20rea?= =?UTF-8?q?dability=20and=20achievement=20feedback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implemented thousand-separator formatting for scores and highscores to improve readability. Enhanced the "NEW BEST!" notification with immediate context by showing the previous high score and added visual polish with colors and emojis. - Added `src/utils.hpp` with `formatWithCommas` utility. - Updated `src/main.cpp` to use formatting in all score displays. - Refined achievement messages for better user feedback. Co-authored-by: aidasofialily-cmd <247843425+aidasofialily-cmd@users.noreply.github.com> --- .Jules/palette.md | 4 ++++ src/main.cpp | 11 ++++++----- src/utils.hpp | 17 +++++++++++++++++ 3 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 src/utils.hpp diff --git a/.Jules/palette.md b/.Jules/palette.md index 05d4366..914e547 100644 --- a/.Jules/palette.md +++ b/.Jules/palette.md @@ -33,3 +33,7 @@ ## 2024-04-24 - Avoiding Trailing Artifacts in CLI Applications **Learning:** When dynamically updating terminal lines using carriage return (`\r`), relying on hardcoded padding spaces to overwrite old text is brittle and leads to trailing text artifacts when new lines are shorter than previous ones. **Action:** Always use the ANSI escape sequence `\033[K` (Erase in Line) immediately after the carriage return (`\r`) to cleanly clear the line before writing new content, rather than manually managing padding spaces. + +## 2025-01-25 - Contextual Achievement Feedback +**Learning:** Announcing a "New Best" is more impactful when the user can see exactly how much they improved. Providing the previous record in parentheses (e.g., "was 1,000") gives immediate context to the achievement and enhances the sense of progress. +**Action:** When displaying record-breaking achievements, include the previous value to provide context for the magnitude of the improvement. diff --git a/src/main.cpp b/src/main.cpp index 60ae556..47a255f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -9,6 +9,7 @@ #include #include #include +#include "utils.hpp" // Color and formatting macros for terminal output #define RESET "\033[0m" @@ -78,7 +79,7 @@ int main() { std::cout << CLR_CTRL << "==========================\n SPEED CLICKER\n==========================\n" << CLR_RESET; if (highscore > 0) { - std::cout << " Personal Best: " << CLR_SCORE << highscore << CLR_RESET << "\n\n"; + std::cout << " Personal Best: " << CLR_SCORE << formatWithCommas(highscore) << CLR_RESET << "\n\n"; } std::cout << "Controls:\n " << CLR_CTRL << "[h]" << CLR_RESET << " Toggle Hard Mode (10x Speed!)\n " @@ -142,9 +143,9 @@ int main() { } if (updateUI) { - std::cout << "\r" ERASE_LINE << CLR_SCORE << "Score: " << score << CLR_RESET << " | High: " << highscore << " " + std::cout << "\r" ERASE_LINE << CLR_SCORE << "Score: " << formatWithCommas(score) << CLR_RESET << " | High: " << formatWithCommas(highscore) << " " << (hardMode ? CLR_HARD "[HARD MODE]" : CLR_NORM "[NORMAL MODE]") - << (score > initialHighscore ? " NEW BEST! 🥳" : "") + << (score > initialHighscore ? " " CLR_CTRL "NEW BEST! ✨🥳" CLR_RESET " (was " + formatWithCommas(initialHighscore) + ")" : "") << std::flush; updateUI = false; } @@ -155,9 +156,9 @@ int main() { } tcsetattr(STDIN_FILENO, TCSANOW, &oldt); - std::cout << "\n\n" << CLR_SCORE << "Final Score: " << score << CLR_RESET << "\n"; + std::cout << "\n\n" << CLR_SCORE << "Final Score: " << formatWithCommas(score) << CLR_RESET << "\n"; if (score > initialHighscore) { - std::cout << "Congratulations! A new personal best!\n"; + std::cout << CLR_CTRL << "Congratulations! A new personal best! ✨🥳" << CLR_RESET << "\n"; } std::cout << "Thanks for playing!\n"; std::cout << "\033[?25h" << std::flush; diff --git a/src/utils.hpp b/src/utils.hpp new file mode 100644 index 0000000..aba6462 --- /dev/null +++ b/src/utils.hpp @@ -0,0 +1,17 @@ +#ifndef UTILS_HPP +#define UTILS_HPP + +#include + +inline std::string formatWithCommas(long long n) { + std::string s = std::to_string(n); + int insertPosition = static_cast(s.length()) - 3; + int limit = (n < 0) ? 1 : 0; + while (insertPosition > limit) { + s.insert(insertPosition, ","); + insertPosition -= 3; + } + return s; +} + +#endif // UTILS_HPP