Pixilang

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

Pixilang — пиксельно-ориентированный язык программирования


Концепция Pixilang разработана в 2006 году Александром Золотовым [1] и Михаилом Разуваевым. В основу языка заложены следующие принципы:

  • универсальная буквенная визуализация графики, анимации и звука в исходном коде;
  • ориентация на идеологию демосцены;
  • простой синтаксис, минималистичность внутренней структуры;
  • межплатформенность;
  • отсутствие объектной ориентации;
  • минимальное использование внешних библиотек;
  • формат хранения программ — текстовый файл.

Текущая версия интерпретатора языка работает в операционных системах GNU/Linux, Microsoft Windows, Microsoft Windows CE и PalmOS. Распространяется по лицензии BSD License (основная часть) и GNU General Public License (библиотеки GIF и XM).

Содержание

Возможности

  • быстрое написание небольших демок/игрушек/открыток и других графических приложений;
  • создание, редактирование и запуск программ на различных платформах;
  • простой синтаксис и малое количество команд;
  • использование универсального контейнера (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 ]

С чего начать? Пример программы

Откройте любимый текстовый редактор и создайте новый файл со следующим содержимым:

Файл:Pixi example01.gif
Pixilang example 01
//Простой анимационный пример
//Запишем цвет #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 зависит от специфики исполняемой программы. Если большую часть программы составляют графические команды, то скорость исполнения будет приближена к скорости исполнения бинарного кода, откомпилированного при помощи Си/Си++.

Планы

  • исправить искажение пикселей при плавном увеличении и повороте;
  • оптимизация по скорости.

Ссылки

Источник — «http://www.sbup.com/wiki/Pixilang»
Личные инструменты

Served in 0.107 secs.