From 485ac0ca401933b41f8854a161df4d7932d99631 Mon Sep 17 00:00:00 2001 From: Rorikstr | Rust Dev Date: Sun, 28 Sep 2025 19:38:54 +0300 Subject: [PATCH] start is working --- src/brick_game/tetris/game_logic.c | 9 ++++----- src/brick_game/tetris/tetris.c | 8 ++++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/brick_game/tetris/game_logic.c b/src/brick_game/tetris/game_logic.c index cbc02b7..77dcd04 100644 --- a/src/brick_game/tetris/game_logic.c +++ b/src/brick_game/tetris/game_logic.c @@ -46,11 +46,12 @@ void init_game() { state->next_figure.rotation = 0; state->score = 0; + state->high_score = 0; state->level = 1; state->drop_time = time(NULL) * 1000; state->game_over = false; state->paused = false; - state->state = FSM_Start; // Начинаем в состоянии Start + state->state = FSM_Start; // Начинаем в состоянии FSM_Start } void place_figure() { @@ -92,7 +93,7 @@ void place_figure() { } void clear_completed_lines() { - GameStateData* state = get_game_state(); + GameStateData* state = get_instance(); int lines_cleared = 0; int write_row = FIELD_HEIGHT - 1; @@ -177,7 +178,7 @@ bool check_collision() { } void fsm_transition() { - GameStateData* state = get_game_state(); + GameStateData* state = get_instance(); switch (state->state) { case FSM_Start: @@ -215,8 +216,6 @@ void fsm_transition() { case FSM_Attaching: place_figure(); - // После place_figure проверяем, не произошел ли Game Over - // В place_figure уже устанавливается FSM_Spawn, но нужно проверить столкновение break; case FSM_GameOver: diff --git a/src/brick_game/tetris/tetris.c b/src/brick_game/tetris/tetris.c index bacc390..466362b 100644 --- a/src/brick_game/tetris/tetris.c +++ b/src/brick_game/tetris/tetris.c @@ -75,7 +75,7 @@ void userInput(UserAction_t action, bool hold) { int saved_high_score = state->high_score; init_game(); state->high_score = saved_high_score; - // Не меняем состояние, пусть остается в Start до следующего нажатия + // Не меняем состояние, пусть остается в FSM_Start до следующего нажатия } else if (state->state == FSM_Start) { // Начинаем игру из состояния Start state->state = FSM_Spawn; @@ -84,7 +84,7 @@ void userInput(UserAction_t action, bool hold) { state->paused = !state->paused; } break; - + case Pause: state->paused = !state->paused; break; @@ -194,8 +194,8 @@ GameInfo_t updateCurrentState() { // Обновляем next const int (*next_shape)[4]; - if (state->state == FSM_GameOver || state->state == FSM_Start) { - // При game_over или в начальном состоянии показываем пустую фигуру + if (state->state == FSM_GameOver) { + // При game_over показываем пустую фигуру next_shape = empty_fig(); } else { next_shape = get_figure_shape(state->next_figure.type, state->next_figure.rotation);