From 1feb55f40439ae553349cab2693681b7f542d22d Mon Sep 17 00:00:00 2001 From: Rorikstr | Rust Dev Date: Thu, 25 Sep 2025 15:42:14 +0300 Subject: [PATCH] init --- src/Makefile | 0 src/brick_game/tetris/fsm.c | 0 src/brick_game/tetris/tetris.c | 0 src/brick_game/tetris/tetris.h | 71 ++++++++++++++++++++++++++++++++++ src/gui/cli/display.c | 0 src/gui/cli/main.c | 0 6 files changed, 71 insertions(+) create mode 100644 src/Makefile create mode 100644 src/brick_game/tetris/fsm.c create mode 100644 src/brick_game/tetris/tetris.c create mode 100644 src/brick_game/tetris/tetris.h create mode 100644 src/gui/cli/display.c create mode 100644 src/gui/cli/main.c 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