diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..e69de29 diff --git a/src/brick_game/tetris/fsm.c b/src/brick_game/tetris/fsm.c new file mode 100644 index 0000000..e69de29 diff --git a/src/brick_game/tetris/tetris.c b/src/brick_game/tetris/tetris.c new file mode 100644 index 0000000..e69de29 diff --git a/src/brick_game/tetris/tetris.h b/src/brick_game/tetris/tetris.h new file mode 100644 index 0000000..4980da2 --- /dev/null +++ b/src/brick_game/tetris/tetris.h @@ -0,0 +1,71 @@ +#ifndef TETRIS_H +#define TETRIS_H + +#include +#include + +// Константы +#define FIELD_WIDTH 10 +#define FIELD_HEIGHT 20 +#define NEXT_SIZE 4 + +// Типы фигур +typedef enum { + I = 0, + J, + L, + O, + S, + T, + Z, + FIGURE_COUNT +} FigureType; + +// Состояния конечного автомата +typedef enum { + START, + SPAWN, + MOVING, + SHIFTING, + ATTACHING, + GAME_OVER +} GameState; + +// Структура фигуры +typedef struct { + int x, y; // Позиция фигуры на поле + FigureType type; // Тип фигуры + int rotation; // Поворот (0–3) +} Figure; + +// Структура состояния игры +typedef struct { + int field[FIELD_HEIGHT][FIELD_WIDTH]; // Игровое поле + Figure current_figure; // Текущая фигура + Figure next_figure; // Следующая фигура + int score; // Текущие очки + int high_score; // Максимальные очки + int level; // Уровень + int lines_cleared; // Удалённые линии + GameState state; // Текущее состояние КА + bool paused; // Игра на паузе? +} GameStateData; + +// Ввод пользователя +typedef enum { + Start, + Pause, + Terminate, + Left, + Right, + Up, // не используется + Down, + Action // вращение +} UserAction_t; + +// Основные функции библиотеки +void userInput(UserAction_t action, bool hold); +GameStateData* getGameState(void); +void updateCurrentState(void); + +#endif \ No newline at end of file diff --git a/src/gui/cli/display.c b/src/gui/cli/display.c new file mode 100644 index 0000000..e69de29 diff --git a/src/gui/cli/main.c b/src/gui/cli/main.c new file mode 100644 index 0000000..e69de29