Page 1 of 1
KMatrix - матрица, как в знаменитой серии фильмов
Posted: Mon Dec 27, 2021 2:14 am
by vitalkrilov
Привет всем, написал свою первую программу под KolibriOS:
KMatrix - консольная программа, которая рисует матрицу, как в одноименной серии фильмов.
Написал её на C. Компилируется внутри системы с помощью Tiny C Compiler.
Если просто запустить, то будет рисоваться матрица по умолчанию (зеленые символы на черном фоне).
Также есть возможность указать аргументы:
Code: Select all
--help[ (там все хорошо расписано, но я писал на английском);
--version;
-F название_цвета (выбор цвета символов);
-B название_цвета (выбор цвета фона);
-S символов_в_секунду (выбор скорости движения матрицы).
Внутри приложенного архива есть:
- main.c (исходник) с файлом GPLv3+ лицензии;
- Shell-скрипт для компиляции в один клик (если есть стандартная директория - /kolibrios);
- KMatrix.kex - скомпилированная программа.
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Mon Dec 27, 2021 3:25 am
by Leency
Вау, очень прикольно! Хочется прямо сделать "хвост" темнее.
Может сделать из этого полноценный скринсейвер? Я как раз уже сделал настройку скринсейвера и можно будет выбрать любой.
Для этого нужно определить обычное окно на весь экран и рисовать уже в нём обычным шрифтом.
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Mon Dec 27, 2021 6:08 pm
by vitalkrilov
Leency wrote:Вау, очень прикольно! Хочется прямо сделать "хвост" темнее.
Может сделать из этого полноценный скринсейвер? Я как раз уже сделал настройку скринсейвера и можно будет выбрать любой.
Для этого нужно определить обычное окно на весь экран и рисовать уже в нём обычным шрифтом.
Интересная идея. Я попробую разобраться с библиотеками на отрисовку, надеюсь, что получится. А встроенных в какую-то библиотеку функций отрисовки текста нет ли случайно? (Я просто пока не встречал такого в примерах, но и не всё просматривал)
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Mon Dec 27, 2021 6:28 pm
by Leency
Сама функция 4 умеет писать выводить текст в буфер (он должен быть 32-битный), нужно только задать флаг.
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Thu Dec 30, 2021 2:20 am
by vitalkrilov
KMatrix 1.1
- Теперь по умолчанию запускается во весь экран.
Можно так же, как и раньше, выбирать цвета, скорость.
Используя --shell, можно запустить программу в консоли.
В графическом режиме теперь можно выбрать цвета в RGB (например, -B 255,0,0).
Есть возможность смены цвета самого нижнего символа в падающем столбце (--highlight или -H).
Добавил внутреннюю обработку ошибок: в случае проблемы будет произведён вывод в BOARD. Программа в большинстве случаев не закроется, а попытается «пережить» неудачу, оставаясь рабочей.
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Thu Dec 30, 2021 2:51 am
by Leency
Круто, что по прежнему можно запустить в Консиле. Несколько пожелай:
- выход по Escape
- добавить обработку кнопки с id = 1, это нужно для закрытия приложения по Alt+F4
- добавить обработку запуска с параметром "@ss" - это для того, чтобы можно было использовать как скринсейвер. При запуске с этим параметром скрывается курсор, выход по движению мушью или любой клавише, при выходе запускается /sys/@ss (Пример можно глянуть в исходниках /sys/demos/spiral )
- как идея: может быть "хвост" сделать темнее? Это создаст эффект наката/каскада как тут
https://youtu.be/GqiEs40x9QU?t=38
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Thu Dec 30, 2021 11:49 am
by vitalkrilov
Leency wrote:Круто, что по прежнему можно запустить в Консиле. Несколько пожелай:
- выход по Escape
- добавить обработку кнопки с id = 1, это нужно для закрытия приложения по Alt+F4
- добавить обработку запуска с параметром "@ss" - это для того, чтобы можно было использовать как скринсейвер. При запуске с этим параметром скрывается курсор, выход по движению мушью или любой клавише, при выходе запускается /sys/@ss (Пример можно глянуть в исходниках /sys/demos/spiral )
- как идея: может быть "хвост" сделать темнее? Это создаст эффект наката/каскада как тут
https://youtu.be/GqiEs40x9QU?t=38
Спасибо за предложения, попробую сделать. Надеюсь, что до подведения итогов года успею)))
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Fri Jan 07, 2022 10:00 pm
by vitalkrilov
KMatrix 1.2
- Добавлена возможность выхода по нажатию на [ESC], системным [Alt]+[F4] (то есть, системной кнопкой);
Добавлен параметр "@ss" для работы как скринсейвера (скрывается курсор; выход движением мыши / нажатием на любую кнопку);
"Хвост" каждого столбца матрицы теперь может иметь случайное затенение (точнее, он вычисляется чем-то вроде градиента с фоном);
Исправлены баги с параметрами: возможность переполнения и перепутанные цвета R и B;
Теперь можно изменять цвета матрицы во время работы программы: [1]-[8] для выбора цвета из стандартного набора (как в Shell), [~] для выбора изменяемого параметра (FG/BG/HL);
Также можно менять скорость матрицы во время выполнения: есть пять режимов, переключаемых кнопками [+]/[-];
Добавлен параметр оптимизации "--copt". Он отключает перерисовку фона там, где это не так нужно, однако могут получаться немного "неточные" символы;
Немного оптимизирован размер программы;
Есть возможность удобного перевода программы путем введения директив с языками. В коде теперь есть упорядоченный блок с английскими сообщениями, которые можно директивами переназначить:
Spoiler:
Code: Select all
#ifdef ru_RU
const char STR_PROGRAM_MOTD[] = "...";
//...
#endif
#ifdef en_US
const char STR_PROGRAM_MOTD[] = "...";
//...
#endif
Теперь программа возвращает код ошибки (что должно делать любое стандартное консольное приложение, например, в Linux, чтобы шэлл понимал результат).
P.S. Немного не успел к концу года, но оно того стоило))
Почти все изменения произведены для графической части программы, не для консольной (раз уж графическим сделалось). Возможность запустить в консоли пусть останется таким как бы приятным бонусом)). Если что, нагрузка на CPU пропорциональна скорости матрицы. Используемая память слегка больше необходимой, но дело в библиотеке C (malloc вроде бы пока выделяет память страницами).
Нужно заливать KMatrix на SVN?
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Sat Jan 08, 2022 1:00 am
by Leency
Получилось круто)
Да, залей на SVN в демки. Попробуй настроить автосборку. Потом можно будет добавить в ISO.
Программа имеет очень много настроек, мне кажется это больше пригодилось бы для более сложных программ, а тут я не уверен что этим будут пользоваться. Но всё равно прикольно)
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Sun Jan 09, 2022 12:36 pm
by vitalkrilov
Может, лучше создать раздел на Wiki со скринсейверами? Что-то вроде раздела "Прочие разнообразные программы", где будет все то, что не попадает под существующие категории. А в нём уже подраздел "Скринсейверы". Либо подраздел в "Разные полезные программы" (если скринсейверы -- "полезные" программы, которые подразумевались в названии раздела
).
Просто получилось так, что я сам, исходя из существующих категорий не смог никуда определить KMatrix.
По поводу помещения в категорию Демо... Мне кажется, тогда лучше создать опять же доп. раздел на Wiki типа "Примеры программ для начала разработки" (или что-то похожее..), куда помещать программы, которые можно использовать как пример / смотреть реализацию чего-нибудь.
Если эта идея нормальная, то я сам позже могу заняться этим (сейчас только надо будет попросить доступ к Wiki)) ).
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Thu Jan 13, 2022 4:46 pm
by vitalkrilov
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Thu Jan 13, 2022 4:50 pm
by vitalkrilov
Leency wrote:Да, залей на SVN в демки. Попробуй настроить автосборку. Потом можно будет добавить в ISO
#9618: залил и настроил автосборку.
Leency, мне добавить KMatrix в ISO? Или этим кто-то другой занимается?
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Fri Jan 14, 2022 2:07 am
by Leency
vitalkrilov wrote:Leency wrote:Да, залей на SVN в демки. Попробуй настроить автосборку. Потом можно будет добавить в ISO
#9618: залил и настроил автосборку.
Leency, мне добавить KMatrix в ISO? Или этим кто-то другой занимается?
Добавь.
Re: KMatrix - матрица, как в знаменитой серии фильмов
Posted: Tue Jan 18, 2022 10:04 pm
by turbocat
Затестил! Красотища! Прости немного влез в твой проект. Я сделал чтобы он собирался новым способом с помощью def-файлов(автоимпорт). По идее даже должен стать худее).