#define MAX_BOARDS 40\r
#define GUESSES_PER_SCREEN 5\r
#define WIN_SCORE (MAX_BOARDS * GUESSES_PER_SCREEN)\r
-#define STATUS_DISPLAY_START 0\r
-#define BOARD_SCORE_DISPLAY_START 2\r
#define BOARD_DISPLAY_START 4\r
#define BOARD_DISPLAY_END 9\r
#define MIN_CARD_VALUE 2\r
\r
static void init_game(void) {\r
watch_clear_display();\r
- watch_display_string(TITLE_TEXT, BOARD_DISPLAY_START);\r
- watch_display_string("GA", STATUS_DISPLAY_START);\r
+ watch_display_text(WATCH_POSITION_BOTTOM, TITLE_TEXT);\r
+ watch_display_text(WATCH_POSITION_TOP_LEFT, "HL");\r
reset_deck();\r
reset_board(true);\r
score = 0;\r
// Render completed boards (screens)\r
char buf[3] = {0};\r
snprintf(buf, sizeof(buf), "%2hhu", completed_board_count);\r
- watch_display_string(buf, BOARD_SCORE_DISPLAY_START);\r
+ watch_display_text(WATCH_POSITION_TOP_RIGHT, buf);\r
}\r
\r
static void render_final_score(void) {\r
- watch_display_string("SC", STATUS_DISPLAY_START);\r
+ watch_display_text_with_fallback(WATCH_POSITION_TOP_LEFT, "SCO", "SC");\r
char buf[7] = {0};\r
const uint8_t complete_boards = score / GUESSES_PER_SCREEN;\r
snprintf(buf, sizeof(buf), "%2hu %03hu", complete_boards, score);\r
watch_set_colon();\r
- watch_display_string(buf, BOARD_DISPLAY_START);\r
+ watch_display_text(WATCH_POSITION_BOTTOM, buf);\r
}\r
\r
static guess_t get_answer(void) {\r
// Render answer indicator\r
switch (answer) {\r
case HL_GUESS_EQUAL:\r
- watch_display_string("==", STATUS_DISPLAY_START);\r
+ watch_display_text(WATCH_POSITION_TOP_LEFT, "==");\r
break;\r
case HL_GUESS_HIGHER:\r
- watch_display_string("HI", STATUS_DISPLAY_START);\r
+ watch_display_text(WATCH_POSITION_TOP_LEFT, "HI");\r
break;\r
case HL_GUESS_LOWER:\r
- watch_display_string("LO", STATUS_DISPLAY_START);\r
+ watch_display_text(WATCH_POSITION_TOP_LEFT, "LO");\r
break;\r
}\r
\r
// No score for two consecutive identical cards\r
} else {\r
// Incorrect guess, game over\r
- watch_display_string("GO", STATUS_DISPLAY_START);\r
+ watch_display_text_with_fallback(WATCH_POSITION_TOP_LEFT, "End", "GO");\r
game_board[guess_position].revealed = true;\r
render_board_position(guess_position);\r
game_state = HL_GS_LOSE;\r
\r
if (score >= WIN_SCORE) {\r
// Win, perhaps some kind of animation sequence?\r
- watch_display_string("WI", STATUS_DISPLAY_START);\r
- watch_display_string(" ", BOARD_SCORE_DISPLAY_START);\r
- watch_display_string("------", BOARD_DISPLAY_START);\r
+ watch_display_text_with_fallback(WATCH_POSITION_TOP_LEFT, "WIN", "WI");\r
+ watch_display_text(WATCH_POSITION_TOP_RIGHT, " ");\r
+ watch_display_text(WATCH_POSITION_BOTTOM, "------");\r
game_state = HL_GS_WIN;\r
return;\r
}\r
break;\r
case HL_GS_SHOW_SCORE:\r
watch_clear_display();\r
- watch_display_string(TITLE_TEXT, BOARD_DISPLAY_START);\r
- watch_display_string("GA", STATUS_DISPLAY_START);\r
+ watch_display_text(WATCH_POSITION_BOTTOM, TITLE_TEXT);\r
+ watch_display_text(WATCH_POSITION_TOP_LEFT, "HL");\r
game_state = HL_GS_TITLE_SCREEN;\r
break;\r
default:\r
- watch_display_string("ERROR", BOARD_DISPLAY_START);\r
+ watch_display_text(WATCH_POSITION_BOTTOM, "ERROR");\r
break;\r
}\r
}\r
switch (event.event_type) {\r
case EVENT_ACTIVATE:\r
// Show your initial UI here.\r
- watch_display_string(TITLE_TEXT, BOARD_DISPLAY_START);\r
- watch_display_string("GA", STATUS_DISPLAY_START);\r
+ watch_display_text(WATCH_POSITION_BOTTOM, TITLE_TEXT);\r
+ watch_display_text(WATCH_POSITION_TOP_LEFT, "HL");\r
break;\r
case EVENT_TICK:\r
// If needed, update your display here.\r