Display two random side lengths to user

This commit is contained in:
2026-08-07 20:34:55 -04:00
parent 99eb9bdbf1
commit 10edcf6305
2 changed files with 59 additions and 7 deletions
+58 -6
View File
@@ -37,6 +37,9 @@ static Layer *s_division_layer;
static Layer *s_alarm_highlight_layer;
static MenuLayer *s_drop_menu_layer;
static TriangleLayer *s_triangle_layer;
static TextLayer *s_side_a_txt_layer;
static TextLayer *s_side_b_txt_layer;
static TextLayer *s_side_c_txt_layer;
// fonts
//// setter
@@ -79,8 +82,8 @@ static const char *s_tan;
// alarm drop menu options
static const char *s_options_type[3] = {"acute", "obtuse", "right"};
static const char *s_options_function[3];
static char *s_options_over[3];
static char *s_options_under[3];
static char *s_options_over[2];
static char *s_options_under[2];
/////////////////////////////////
@@ -535,6 +538,56 @@ static void alarm_window_load() {
s_triangle_layer = triangle_layer_create(GRect(0, s_top_bar_grect.size.h + 1, PBL_DISPLAY_WIDTH, PBL_DISPLAY_HEIGHT - (s_top_bar_grect.size.h * 2)), GColorBlack);
layer_add_child(window_layer, s_triangle_layer->layer);
// triangle measurements text layers
//// side_a
s_side_a_txt_layer = text_layer_create(GRect(0, s_bottom_bar_grect.origin.y - 27, PBL_DISPLAY_WIDTH, 23));
text_layer_set_background_color(s_side_a_txt_layer, GColorClear);
text_layer_set_font(s_side_a_txt_layer, s_font_mansalva_small);
text_layer_set_text_alignment(s_side_a_txt_layer, GTextAlignmentCenter);
layer_add_child(window_layer, text_layer_get_layer(s_side_a_txt_layer));
//// side_b
s_side_b_txt_layer = text_layer_create(GRect(-4, PBL_DISPLAY_WIDTH / 2, PBL_DISPLAY_WIDTH, 23));
text_layer_set_background_color(s_side_b_txt_layer, GColorClear);
text_layer_set_font(s_side_b_txt_layer, s_font_mansalva_small);
text_layer_set_text_alignment(s_side_b_txt_layer, GTextAlignmentRight);
layer_add_child(window_layer, text_layer_get_layer(s_side_b_txt_layer));
//// side_c
s_side_c_txt_layer = text_layer_create(GRect(4, PBL_DISPLAY_WIDTH / 2, PBL_DISPLAY_WIDTH, 23));
text_layer_set_background_color(s_side_c_txt_layer, GColorClear);
text_layer_set_font(s_side_c_txt_layer, s_font_mansalva_small);
layer_add_child(window_layer, text_layer_get_layer(s_side_c_txt_layer));
//// display 2 side lengths to the user
static char side_a_buffer[3], side_b_buffer[3], side_c_buffer[3];
uint8_t ignored_side = rand() % 3;
switch (ignored_side) {
case 0:
snprintf(side_b_buffer, sizeof(side_b_buffer), "%u", s_triangle_layer->side_b);
snprintf(side_c_buffer, sizeof(side_c_buffer), "%u", s_triangle_layer->side_c);
s_options_over[0] = side_b_buffer;
s_options_over[1] = side_c_buffer;
s_options_under[0] = side_b_buffer;
s_options_under[1] = side_c_buffer;
break;
case 1:
snprintf(side_a_buffer, sizeof(side_a_buffer), "%u", s_triangle_layer->side_a);
snprintf(side_c_buffer, sizeof(side_c_buffer), "%u", s_triangle_layer->side_c);
s_options_over[0] = side_a_buffer;
s_options_over[1] = side_c_buffer;
s_options_under[0] = side_a_buffer;
s_options_under[1] = side_c_buffer;
break;
case 2:
snprintf(side_a_buffer, sizeof(side_a_buffer), "%u", s_triangle_layer->side_a);
snprintf(side_b_buffer, sizeof(side_b_buffer), "%u", s_triangle_layer->side_b);
s_options_over[0] = side_a_buffer;
s_options_over[1] = side_b_buffer;
s_options_under[0] = side_a_buffer;
s_options_under[1] = side_b_buffer;
}
text_layer_set_text(s_side_a_txt_layer, side_a_buffer);
text_layer_set_text(s_side_b_txt_layer, side_b_buffer);
text_layer_set_text(s_side_c_txt_layer, side_c_buffer);
// drop menus
//// determine trigonometric function options
s_sin = s_sin_arr[rand() % 2];
@@ -544,10 +597,6 @@ static void alarm_window_load() {
s_options_function[0] = s_sin;
s_options_function[1] = s_cos;
s_options_function[2] = s_tan;
s_options_over[0] = "1";
s_options_over[1] = "2";
s_options_under[0] = "1";
s_options_under[1] = "2";
//// create drop window
s_drop_window = window_create(); // TODO destroy on window unload?
window_set_window_handlers(
@@ -559,6 +608,9 @@ static void alarm_window_load() {
}
static void alarm_window_unload() {
text_layer_destroy(s_side_a_txt_layer);
text_layer_destroy(s_side_b_txt_layer);
text_layer_destroy(s_side_c_txt_layer);
triangle_layer_destroy(s_triangle_layer);
layer_destroy(s_alarm_highlight_layer);
layer_destroy(s_division_layer);