#include "higher_lower_game_face.h"\r
#include "watch_common_display.h"\r
\r
+\r
+#define KING 12\r
+#define QUEEN 11\r
+#define JACK 10\r
+\r
#define TITLE_TEXT "Hi-Lo"\r
#define GAME_BOARD_SIZE 6\r
#define MAX_BOARDS 40\r
#define BOARD_DISPLAY_START 4\r
#define BOARD_DISPLAY_END 9\r
#define MIN_CARD_VALUE 2\r
-#define MAX_CARD_VALUE 14\r
+#define MAX_CARD_VALUE KING\r
#define CARD_RANK_COUNT (MAX_CARD_VALUE - MIN_CARD_VALUE + 1)\r
#define CARD_SUIT_COUNT 4\r
#define DECK_SIZE (CARD_SUIT_COUNT * CARD_RANK_COUNT)\r
watch_set_pixel(com_pin, seg);\r
}\r
\r
+static inline size_t get_display_position(size_t board_position) {\r
+ return FLIP_BOARD_DIRECTION ? BOARD_DISPLAY_START + board_position : BOARD_DISPLAY_END - board_position;\r
+}\r
+\r
static void render_board_position(size_t board_position) {\r
- const size_t display_position = FLIP_BOARD_DIRECTION\r
- ? BOARD_DISPLAY_START + board_position\r
- : BOARD_DISPLAY_END - board_position;\r
+ const size_t display_position = get_display_position(board_position);\r
const bool revealed = game_board[board_position].revealed;\r
\r
//// Current position indicator spot\r
\r
const uint8_t value = game_board[board_position].value;\r
switch (value) {\r
- case 14: // A (≡)\r
+ case KING: // K (≡)\r
watch_display_character(' ', display_position);\r
set_segment_at_position(A, display_position);\r
set_segment_at_position(D, display_position);\r
set_segment_at_position(G, display_position);\r
break;\r
- case 13: // K (=)\r
+ case QUEEN: // Q (=)\r
watch_display_character(' ', display_position);\r
set_segment_at_position(A, display_position);\r
set_segment_at_position(D, display_position);\r
break;\r
- case 12: // Q (-)\r
+ case JACK: // J (-)\r
watch_display_character('-', display_position);\r
break;\r
default: {\r
}\r
\r
static void render_final_score(void) {\r
- watch_display_text_with_fallback(WATCH_POSITION_TOP_LEFT, "SCO", "SC");\r
+ watch_display_text_with_fallback(WATCH_POSITION_TOP, "SCORE", "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
// Incorrect guess, game over\r
watch_display_text_with_fallback(WATCH_POSITION_TOP_LEFT, "End", "GO");\r
game_board[guess_position].revealed = true;\r
+ watch_display_text(WATCH_POSITION_BOTTOM, "------");\r
+ render_board_position(guess_position - 1);\r
render_board_position(guess_position);\r
+ if (game_board[guess_position].value == JACK && guess_position < GAME_BOARD_SIZE) // Adds a space in case the revealed option is '-'\r
+ watch_display_character(' ', get_display_position(guess_position + 1));\r
game_state = HL_GS_LOSE;\r
return;\r
}\r
// Win, perhaps some kind of animation sequence?\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
+ watch_display_text_with_fallback(WATCH_POSITION_BOTTOM, "WINNER", "winnEr");\r
game_state = HL_GS_WIN;\r
return;\r
}\r