From 9dfea05a32b657473aab244e2dc806b51842f7d8 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 26 Feb 2026 12:07:19 +0000 Subject: [PATCH] feat(ux): hide cursor on start, add prompt, and clear screen Co-authored-by: EiJackGH <172181576+EiJackGH@users.noreply.github.com> --- src/main.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 775bf66..f44d880 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,8 +25,8 @@ struct termios oldt; void restore_terminal(int signum) { tcsetattr(STDIN_FILENO, TCSANOW, &oldt); // Use write() and _exit() because they are async-signal-safe - const char* msg = "\033[0m\n\nGame interrupted. Terminal settings restored.\n"; - write(STDOUT_FILENO, msg, 52); + const char* msg = "\033[?25h\033[0m\n\nGame interrupted. Terminal settings restored.\n"; + write(STDOUT_FILENO, msg, 58); _exit(signum); } @@ -46,11 +46,20 @@ int main() { return 1; } + // Hide cursor and clear screen + std::cout << "\033[?25l\033[2J\033[H" << std::flush; + long long score = 0; bool hardMode = false; char input; std::cout << CLR_CTRL << "==========================\n SPEED CLICKER\n==========================\n" << CLR_RESET << "Controls:\n " << CLR_CTRL << "[h]" << CLR_RESET << " Toggle Hard Mode (10x Speed!)\n " << CLR_CTRL << "[q]" << CLR_RESET << " Quit Game\n " << CLR_CTRL << "[Any key]" << CLR_RESET << " Click!\n\n"; + std::cout << "Press any key to start..." << std::flush; + if (read(STDIN_FILENO, &input, 1) < 0) { + perror("read"); + } + std::cout << "\r" << " " << "\r" << std::flush; + struct pollfd fds[1] = {{STDIN_FILENO, POLLIN, 0}}; auto last_tick = std::chrono::steady_clock::now(); bool updateUI = true; @@ -86,6 +95,6 @@ int main() { } } tcsetattr(STDIN_FILENO, TCSANOW, &oldt); - std::cout << "\n\n" << CLR_SCORE << "Final Score: " << score << CLR_RESET << "\nThanks for playing!\n"; + std::cout << "\033[?25h\n\n" << CLR_SCORE << "Final Score: " << score << CLR_RESET << "\nThanks for playing!\n"; return 0; }