This commit is contained in:
Rorikstr | Rust Dev 2025-09-25 15:42:14 +03:00
parent e117573d3b
commit 1feb55f404
6 changed files with 71 additions and 0 deletions

0
src/Makefile Normal file
View file

View file

View file

View file

@ -0,0 +1,71 @@
#ifndef TETRIS_H
#define TETRIS_H
#include <stdint.h>
#include <stdbool.h>
// Константы
#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; // Поворот (03)
} 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

0
src/gui/cli/display.c Normal file
View file

0
src/gui/cli/main.c Normal file
View file