Загрузить файлы в «/»

This commit is contained in:
2025-05-07 19:35:37 +00:00
parent 964fee8368
commit 2ba10f3792
2 changed files with 278 additions and 1 deletions

125
README.md
View File

@ -1,2 +1,125 @@
# CMC
# CMC (Complex Modules Clock)
**Complex Modules Clock** (Комплекс модулей часов) — это консольное приложение на языке C, которое предоставляет несколько способов отображения текущего времени и даты в терминале. Проект поддерживает статический вывод, динамически обновляемый текстовый таймер и псевдографические часы с различными шрифтами (3x3, 5x5, 8x8). Приложение модульное, что позволяет легко расширять его функциональность.
## Возможности
- Статический вывод текущей даты и времени в формате `ГГГГ/ВремяГода/Месяц | День/ДеньНедели | ЧЧ:ММ:СС`.
- Динамически обновляемый текстовый таймер, показывающий время с частотой раз в секунду.
- Псевдографические часы с тремя шрифтами:
- 3x3 (аргумент `m3`)
- 5x5 (аргумент `m5`)
- 8x8 (аргумент `m7`)
- Обработка SIGINT (Ctrl+C) для корректного завершения.
- Модульная архитектура для упрощения добавления новых функций.
- Поддержка ANSI-кодов для цветного и форматированного вывода.
## Установка
Для сборки и запуска проекта требуется компилятор GCC и утилита `make`, доступные на большинстве Unix-подобных систем (Linux, macOS). На Windows можно использовать WSL или MinGW.
1. **Клонируйте репозиторий** (если проект размещён на GitHub):
```bash
git clone <URL_репозитория>
cd complex-modules-clock
```
2. **Соберите проект** с помощью `Makefile`:
```bash
make
```
Это создаст исполняемый файл `complex_modules_clock`.
3. **Проверьте зависимости**:
- Требуется стандартная библиотека C и заголовочные файлы (`stdio.h`, `time.h`, `unistd.h`, `signal.h`, `stdlib.h`).
- Никаких внешних библиотек не требуется.
## Использование
Запустите программу с одним из поддерживаемых аргументов:
```bash
./complex_modules_clock <аргумент>
```
### Доступные аргументы
Look at the [`HELP`](HELP)
### Examples
- Показать справку:
```bash
./complex_modules_clock mh
```
- Вывести текущую дату и время:
```bash
./complex_modules_clock ms
```
Пример вывода:
```
2025/Winter/January | 7/Tuesday | 13:21:45
```
- Запустить псевдографические часы (5x5):
```bash
./complex_modules_clock m5
```
> **Примечание**: Для корректного отображения псевдографики используйте терминал с поддержкой UTF-8 (например, большинство современных терминалов Linux/macOS).
> **Внимание**: Нажмите `Ctrl+C`, чтобы завершить выполнение программы. Курсор будет восстановлен, а экран очищен.
## Структура проекта
- **`complex_modules_clock.c`**: Основной файл, который обрабатывает аргументы и вызывает модули.
- **`module_*.c`**: Модули, реализующие различные режимы работы:
- `module_00.c`: Справочное сообщение (`mh`).
- `module_01.c`: Статический вывод времени (`ms`).
- `module_02.c`: Динамический текстовый таймер (`mu`).
- `module_03.c`: Псевдографические часы 3x3 (`m3`).
- `module_05.c`: Псевдографические часы 5x5 (`m5`).
- `module_07.c`: Псевдографические часы 8x8 (`m7`).
- **`common.c`, `common.h`**: Функции для получения времени года, месяца и дня недели.
- **`pseudographic_font_*.h`**: Определения псевдографических шрифтов (3x3, 5x5, 8x8).
- **`clock_*.c`**: Отдельные реализации часов (возможно, прототипы).
- **`Makefile`**: Скрипт для сборки проекта.
## Дополнительные детали проекта
- Каждому модулю соответствует аналог и отдельно компелируемая программа.
| Модуль | Аналог |
|---------------|----------|
| `module_00.c` | HELP |
| `module_01.c` | clock_sr.c |
| `module_02.c` | clock_up.c |
| `module_03.c` | clock_pg3.c |
| `module_05.c` | clock_pg5.c |
| `module_07.c` | clock_pg7.c |
## Total number of lines in the project:
``` 1020```
## License
Этот проект распространяется под лицензией **MIT**.
См. файл [`LICENSE`](LICENSE) для подробностей.
(если файл отсутствует, уточните у автора проекта).
**Примечание**: Если вы используете эту программу в своем проекте, буду благодарен, если укажите авторство.
## Author
- **Grannik**
## Contacts:
- **Сайт**: [Grannik](https://grannik.neocities.org/)
## Repositories:
- **asciinema** [CMC](https://asciinema.org/a/718357)
- **Codeberg**: [CMC](https://codeberg.org/Grannik/CMC)
- **GitHub**: [CMC](https://github.com/Grannik/CMC)
- **GitLab**: [CMC](https://gitlab.com/grannik/cmc)
- **SourceForge**: [CMC](https://sourceforge.net/p/cmc/code/ci/master/tree/)
- **Gitea (Demo)**: [CMC]()
- **Gogs (Demo)**: [CMC]()
*Создано с ❤️ для любителей консольных приложений.*

154
pseudographic_font_7.h Normal file
View File

@ -0,0 +1,154 @@
#ifndef PSEUDOGRAPHIC_FONT_7_H
#define PSEUDOGRAPHIC_FONT_7_H
#include <string.h>
// Псевдографический шрифт для цифр 0-9 и разделителя (:).
// Каждый символ представлен 8 строками по 8 символов (UTF-8).
static const char* font_7[11][8] = {
// 0
{
" ",
" █████ ",
" █ █",
" █ █",
" █ █",
" █ █",
" █ █",
" █████ "
},
// 1
{
" ",
" ███ ",
" █ █ ",
" █ █ ",
"",
"",
"",
" ███ "
},
// 2
{
" ",
" █████ ",
"",
"",
" █████ ",
"",
"",
" █████ "
},
// 3
{
" ",
" █████ ",
"",
"",
" ███ ",
"",
"",
" █████ "
},
// 4
{
" ",
" █ █",
" █ █",
" █ █",
" █████ ",
"",
"",
""
},
// 5
{
" ",
" █████ ",
"",
"",
" █████ ",
"",
"",
" █████ "
},
// 6
{
" ",
" █████ ",
"",
"",
" █████ ",
" █ █",
" █ █",
" █████ "
},
// 7
{
" ",
" █████ ",
" █ █",
"",
" ███ ",
"",
"",
""
},
// 8
{
" ",
" █████ ",
" █ █",
" █ █",
" █████ ",
" █ █",
" █ █",
" █████ "
},
// 9
{
" ",
" █████ ",
" █ █",
" █ █",
" █████ ",
"",
" █ █",
" █████ "
},
// : (разделитель)
{
" ",
" ███ ",
" █ █ ",
" ███ ",
" ",
" ███ ",
" █ █ ",
" ███ "
}
};
// Пустой символ для некорректных входных данных
static const char* empty_char[8] = {
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "
};
// Функция для получения псевдографического символа по значению
const char** get_pseudographic_char_7(char c) {
if (c >= '0' && c <= '9') {
return font_7[c - '0'];
} else if (c == ':') {
return font_7[10];
}
return empty_char;
}
#endif