Pixilang
Материал из Википедии — свободной энциклопедии
Для улучшения статьи желательно:
|
Pixilang — пиксельно-ориентированный язык программирования
Концепция Pixilang разработана в 2006 году Александром Золотовым [1] и Михаилом Разуваевым. В основу языка заложены следующие принципы:
- универсальная буквенная визуализация графики, анимации и звука в исходном коде;
- ориентация на идеологию демосцены;
- простой синтаксис, минималистичность внутренней структуры;
- межплатформенность;
- отсутствие объектной ориентации;
- минимальное использование внешних библиотек;
- формат хранения программ - TXT.
Текущая версия интерпретатора языка работает в операционных системах Windows, Linux и PalmOS. Исходные коды интерпретатора распространяются под лицензией GNU GPL.
Содержание |
[править] Возможности
- быстрое написание небольших демок/игрушек/открыток и других графических приложений;
- создание, редактирование и запуск программ на различных платформах;
- простой синтаксис и малое количество команд;
- использование универсального контейнера (pixi) для хранения различных данных (текст, картинки, шрифт);
- пиксельная графика (в том числе анимация) описывается непосредственно в исполняемом TXT-файле при помощи ASCII символов;
- прозрачность (простая и через альфа-канал);
- поворот и масштабирование;
- удобные команды синхронизации;
- отсутствие математических floating point операций для повышения скорости выполнения программ;
- проигрывание трекерной музыки в форматах MOD и XM (используется движок PsyTexx);
- загрузка картинок из форматов GIF (анимированных) и JPG;
- преобразование любой анимированной картинки в моноширный шрифт (каждый кадр - отдельный символ);
- реал-тайм экспорт видеоряда в анимированный GIF;
- сохранение области экрана в TXT-файл с pixilang-кодом внутри (оптимальное преобразование цветных пикселей в ASCII коды производится при помощи нейросети);
[править] Технические детали
Pixilang - интерпретатор. Интерпретируемая программа выбирается пользователем через графический диалог при старте. Если в папке с интерпретатором имеется файл boot.txt, то он выбирается автоматически. Перед запуском происходит генерация байт-кода.
Основа Pixilang - это pixi-контейнер. Он может содержать в себе картинку, строку текста, числовой массив и ссылку на другой pixi-контейнер с альфа-каналом. То есть, в pixi-контейнере может хранится любой набор данных, к которому можно обращаться, как к массиву.
Далее под терминами "картинка", "текстовая строка", "числовой массив" будет пониматься обычное число - номер pixi-контейнера. Пример:
//Считывание значения второго пикселя в картинке image: pixel_value = image[ 2 ]
[править] С чего начать? Пример программы
Откройте любимый текстовый редактор и создайте новый файл со следующим содержимым:
//Простой анимационный пример //Запишем цвет #003050 в переменную o o = #003050 //Опишем анимированную картинку (pixi), //состоящую из двух кадров: logo = " .o...ooo...o. ..o..o.o..o.. ...ooooooo... ...ooooooo... .ooooooooooo. .o.ooooooo.o. oo.........oo + .o...ooo...o. ..o..o.o..o.. ...ooo.ooo... ...ooooooo... .ooooooooooo. .o.ooooooo.o. oo.........oo " //Теперь заставим язык преобразовать эту картинку //из текстового вида в графический: make_pixi( logo ) //В этой переменной будем хранить коэфицент увеличения: zm = 20 //Метка: start: //Устанавливаем прозрачность 64: transp( 64 ) //Стираем экран белым цветом. Слегка стираем, //так как установлена прозрачность 64: clear( #FFFFFF ) //Устанавливаем прозрачность 256 (непрозрачный): transp( 256 ) //Рисуем нашу картинку logo по координатам 0,0 с увеличением zm: pixi( logo, 0, 0, zm ) //Уменьшаем увеличение на единицу: zm - 1 //Выводим результат на экран и ждем 100 миллисекунд: frame( 100 ) //Переходим на метку start: go start
Далее запустите Pixilang интерпретатор и укажите созданный вами файл.
[править] Демки (результаты работы некоторых pixilang-приложений)
[править] Планы
- исправить искажение пикселей при плавном увеличении и повороте;
- добавить возможность работы с бинарными файлами;
- добавить возможность создавать и редактировать звук используя pixi-контейнеры;
- ввести циклические операторы;
- добавить 3D пиксели.