diff --git a/src/brick_game/tetris/tetris.c b/src/brick_game/tetris/tetris.c index 54d4c6d..c19dc19 100644 --- a/src/brick_game/tetris/tetris.c +++ b/src/brick_game/tetris/tetris.c @@ -9,41 +9,193 @@ static bool initialized = false; const int (*get_figure_shape(FigureType type, int rotation))[4] { static const int shapes[FIGURE_COUNT][4][4][4] = { - // I - {{{0, 0, 0, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}, {0, 0, 0, 0}}, - {{0, 0, 1, 0}, {0, 0, 1, 0}, {0, 0, 1, 0}, {0, 0, 1, 0}}, - {{0, 0, 0, 0}, {0, 0, 0, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}}, - {{0, 1, 0, 0}, {0, 1, 0, 0}, {0, 1, 0, 0}, {0, 1, 0, 0}}}, + // I + { + { + {0, 0, 0, 0}, + {1, 1, 1, 1}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 0, 1, 0}, + {0, 0, 1, 0}, + {0, 0, 1, 0}, + {0, 0, 1, 0} + }, + { + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {1, 1, 1, 1}, + {0, 0, 0, 0} + }, + { + {0, 1, 0, 0}, + {0, 1, 0, 0}, + {0, 1, 0, 0}, + {0, 1, 0, 0} + } + }, // O - {{{0, 1, 1, 0}, {0, 1, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, - {{0, 1, 1, 0}, {0, 1, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, - {{0, 1, 1, 0}, {0, 1, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, - {{0, 1, 1, 0}, {0, 1, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}}, + { + { + {0, 1, 1, 0}, + {0, 1, 1, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 1, 1, 0}, + {0, 1, 1, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 1, 1, 0}, + {0, 1, 1, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 1, 1, 0}, + {0, 1, 1, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + } + }, // T - {{{0, 1, 0, 0}, {1, 1, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, - {{0, 1, 0, 0}, {0, 1, 1, 0}, {0, 1, 0, 0}, {0, 0, 0, 0}}, - {{0, 0, 0, 0}, {1, 1, 1, 0}, {0, 1, 0, 0}, {0, 0, 0, 0}}, - {{0, 1, 0, 0}, {1, 1, 0, 0}, {0, 1, 0, 0}, {0, 0, 0, 0}}}, + { + { + {0, 1, 0, 0}, + {1, 1, 1, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 1, 0, 0}, + {0, 1, 1, 0}, + {0, 1, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 0, 0, 0}, + {1, 1, 1, 0}, + {0, 1, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 1, 0, 0}, + {1, 1, 0, 0}, + {0, 1, 0, 0}, + {0, 0, 0, 0} + } + }, // L - {{{0, 0, 1, 0}, {1, 1, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, - {{1, 0, 0, 0}, {1, 0, 0, 0}, {1, 1, 0, 0}, {0, 0, 0, 0}}, - {{0, 0, 0, 0}, {1, 1, 1, 0}, {1, 0, 0, 0}, {0, 0, 0, 0}}, - {{1, 1, 0, 0}, {0, 1, 0, 0}, {0, 1, 0, 0}, {0, 0, 0, 0}}}, + { + { + {0, 0, 1, 0}, + {1, 1, 1, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {1, 0, 0, 0}, + {1, 0, 0, 0}, + {1, 1, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 0, 0, 0}, + {1, 1, 1, 0}, + {1, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {1, 1, 0, 0}, + {0, 1, 0, 0}, + {0, 1, 0, 0}, + {0, 0, 0, 0} + }}, // J - {{{1, 0, 0, 0}, {1, 1, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, - {{0, 1, 1, 0}, {0, 1, 0, 0}, {0, 1, 0, 0}, {0, 0, 0, 0}}, - {{0, 0, 0, 0}, {1, 1, 1, 0}, {0, 0, 1, 0}, {0, 0, 0, 0}}, - {{0, 1, 0, 0}, {0, 1, 0, 0}, {1, 1, 0, 0}, {0, 0, 0, 0}}}, + { + { + {1, 0, 0, 0}, + {1, 1, 1, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 1, 1, 0}, + {0, 1, 0, 0}, + {0, 1, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 0, 0, 0}, + {1, 1, 1, 0}, + {0, 0, 1, 0}, + {0, 0, 0, 0} + }, + { + {0, 1, 0, 0}, + {0, 1, 0, 0}, + {1, 1, 0, 0}, + {0, 0, 0, 0} + }}, // S - {{{0, 1, 1, 0}, {1, 1, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, - {{0, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 0}, {0, 0, 0, 0}}, - {{0, 1, 1, 0}, {1, 1, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, - {{0, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 0}, {0, 0, 0, 0}}}, + { + { + {0, 1, 1, 0}, + {1, 1, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 1, 0, 0}, + {0, 1, 1, 0}, + {0, 0, 1, 0}, + {0, 0, 0, 0} + }, + { + {0, 1, 1, 0}, + {1, 1, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 1, 0, 0}, + {0, 1, 1, 0}, + {0, 0, 1, 0}, + {0, 0, 0, 0} + }}, // Z - {{{1, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, - {{0, 0, 1, 0}, {0, 1, 1, 0}, {0, 1, 0, 0}, {0, 0, 0, 0}}, - {{1, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, - {{0, 0, 1, 0}, {0, 1, 1, 0}, {0, 1, 0, 0}, {0, 0, 0, 0}}}}; + { + { + {1, 1, 0, 0}, + {0, 1, 1, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 0, 1, 0}, + {0, 1, 1, 0}, + {0, 1, 0, 0}, + {0, 0, 0, 0} + }, + { + {1, 1, 0, 0}, + {0, 1, 1, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0} + }, + { + {0, 0, 1, 0}, + {0, 1, 1, 0}, + {0, 1, 0, 0}, + {0, 0, 0, 0} + } + } + }; return shapes[type][rotation]; } @@ -53,7 +205,7 @@ void user_input(UserAction_t action) { initialized = true; } - if (action >= Figure1 && action <= Figure7) { + if ( Figure1 <= action && action <= Figure7) { FigureType type = (FigureType)(action - Figure1); game_state.current_figure.type = type; game_state.current_figure.x = FIELD_WIDTH / 2 - 2; diff --git a/src/brick_game/tetris/tetris.h b/src/brick_game/tetris/tetris.h index 362ccde..c8833e5 100644 --- a/src/brick_game/tetris/tetris.h +++ b/src/brick_game/tetris/tetris.h @@ -57,7 +57,7 @@ typedef enum { // Основные функции библиотеки void user_input(UserAction_t action); -GameStateData* getGameState(void); +GameStateData* get_game_state(void); const int (*get_figure_shape(FigureType type, int rotation))[4]; diff --git a/src/gui/cli/display.c b/src/gui/cli/display.c index 82412f1..66ac5dd 100644 --- a/src/gui/cli/display.c +++ b/src/gui/cli/display.c @@ -5,7 +5,7 @@ void display_game() { clear(); - GameStateData* state = getGameState(); + GameStateData* state = get_game_state(); // Очистка поля for (int i = 0; i < FIELD_HEIGHT; i++) { diff --git a/src/gui/cli/main.c b/src/gui/cli/main.c index c2a24dc..56da0b5 100644 --- a/src/gui/cli/main.c +++ b/src/gui/cli/main.c @@ -18,10 +18,10 @@ int main() { int ch; bool hold = false; - - while (1) { + UserAction_t action = Undefined; + while (!Terminate) { ch = getch(); - UserAction_t action = Undefined; + switch (ch) { case 'q': action = Terminate; break; @@ -43,8 +43,6 @@ int main() { } display_game(); - - if (action == Terminate) break; } endwin();