Оглавление

Условное название проекта — TGarden

просмотр
редактор
error
файловая система

Статус проектика

Написал в апреле 2013. Писался между делом и на коленке, но я старался не превращать код сразу же в хлам, а сохранить возможности развития.

Не планирую забрасывать, если люди не останутся равнодушны к этой затее.

Сводка команд

    # комментарий
[@] U n
[@] D n
[@] L n
[@] R n
[@] M n , n
    A n
    C n
    W n
    P n , n , n
    S n
    <
    >
    $(name=подпрограмма)
    $(name)
    $L n
    $S n
    $D n

Краткая справка по языку

Комментарии начинаются с символа # и заканчиваются в конце строки.

Есть пять операций перемещения: четыре — по осям U, D, L, R, и одна — M, — перемещение с заданными координатами. Любая операция перемещения может предворяться модификатором @, который говорит о том, что рисовать линию не надо, требуется только переместить перо-черепашку.

Две операции поворотов: A, C — против- и почасовой стрелке.

Операция установки толщины линии — W.

Установка цвета производится оператором P в формате RGB.

Масштабирование производится оператором S.

Угловые скобки < и > сохраняют и восстанавливают контекст, соответственно. В контекст входит положение, цвет, толщина линии и текущий масштаб.

Именованная подпрограмма объявляется при помощи конструкции $(имя=текст подпрограммы).

Вызов именованной подпрограммы производится с помощью конструкции $(имя).

Допускаются рекурсивные вызовы (хотя, объявить подпрограмму внутри другой подпрограммы нельзя; только вызвать).

Глубина рекурсии ограничивается двумя параметрами: глубиной рекурсии $L и минимальным масштабом $S. Если масштаб меньше заданного, то вызовы не осуществются.

Кроме того, есть параметр, управляющий скоростью рисования$D.

Разбор примеров

Простейший пример. Квадрат:

# рисуем линии:
# вверх на четыре единицы
U 4
# вправо
R 4
# вниз
D 4
# влево
L 4

Красный квадрат посередине

# Устанавливаем красный цвет
P 255, 0, 0
# Смещаемся вниз-влево, не рисуя
@ M -2, -2
# рисуем линии, как в предыдущем примере
U 4 R 4 D 4 L 4

Функции, повороты и масштабирвоания

# Создаём функцию, рисующую квадрат
$(sq= U4 R4 D4 L4 )
# устанавливаем красный цвет и риуем квадрат,
# вызывая функцию
P 255,0,0 $(sq)
# поворачиваем сиситему координат против часовой стрелки
# на 15 градусов
A 15
# изменяем масштаб
S 0.7
# корректируем цвет и ривуем новый квадрта
P 204,0,0 $(sq)
# ещё раз поворачиваем сиситему координат
A 15
# изменяем масштаб
S 0.7
# корректируем цвет и ривуем новый квадрта
P 153,0,0 $(sq)

Сложный пример:

$(Z=<C45$(F)>A45$(F))
$(F=U1S.707$(Z))
P 0,100,0
W .8
@D3.5S3
$(F)

(когда-нибудь напишу; если вы ждёте этих разъяснений, если они вам интересны, — пожалуйста пишите, — я потороплюсь)