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 со скринсейверами? Что-то вроде раздела "Прочие разнообразные программы", где будет все то, что не попадает под существующие категории. А в нём уже подраздел "Скринсейверы". Либо подраздел в "Разные полезные программы" (если скринсейверы -- "полезные" программы, которые подразумевались в названии раздела :D ).
Просто получилось так, что я сам, исходя из существующих категорий не смог никуда определить KMatrix.

По поводу помещения в категорию Демо... Мне кажется, тогда лучше создать опять же доп. раздел на Wiki типа "Примеры программ для начала разработки" (или что-то похожее..), куда помещать программы, которые можно использовать как пример / смотреть реализацию чего-нибудь.

Если эта идея нормальная, то я сам позже могу заняться этим (сейчас только надо будет попросить доступ к Wiki)) ).

Re: KMatrix - матрица, как в знаменитой серии фильмов

Posted: Thu Jan 13, 2022 4:46 pm
by vitalkrilov
Добавил статью на Wiki: http://wiki.kolibrios.org/wiki/KMatrix/ru

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-файлов(автоимпорт). По идее даже должен стать худее).