Загрузить файлы в «/»
This commit is contained in:
125
README.md
125
README.md
@ -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
154
pseudographic_font_7.h
Normal 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
|
Reference in New Issue
Block a user