JaggerDer
-
Публикации
34 -
Зарегистрирован
-
Посещение
-
Победитель дней
6
Сообщения, опубликованные пользователем JaggerDer
-
-
Кстати, когда я узнал о таких шаблонах наворотил такую шнягу:
arg = { ... } local function man(algo) for v in string.gmatch(algo, "%a") do if (v == "l") then turtle.turnLeft() elseif (v == "r") then turtle.turnRight() elseif (v == "f") then turtle.forward() elseif (v == "u") then turtle.up() elseif (v == "d") then turtle.down() elseif (v == "b") then turtle.back() elseif (v == "p") then print("lol") else print("Impossible algorithm.") return false end end return true end man(tostring(arg[1]))Мне такая штука показалась достаточно удобна. Просто задаем алгоритм телодвижений черепашки одной строкой, например fffllffrfffb.
-
1
-
-
Что ты называешь пикселами? В СС вроде нет графики
Пикселом я называю символ имеющий цвет и цвет его фона.
-
Итак, добавил пару штук в свой API:
-Можно сохранять слой в файл или же загружать из файла(буду благодарен если кто подскажет как можно сжимать информацию о пикселах слоев).
-Теперь можно сдвигать слои по x, y(не путать со сдвигом по z).
-
Да.Т.е. это что-то вроде Canvas API?
Позволяет программе выводить свою графику/текст на нескольких накладывающихся слоях, и контролировать, что и где отображается?
-
Нет, это не графический редактор. Я хотел сделать библиотеку для работы со слоями куда можно записать и откуда можно прочитать информацию о тексте, цвете - нужно было для чего то, т.к. в СС нельзя получить эту инфу, только нарисовать.Это что-то вроде графического редактора для CC?
Можно будет сохранять и загружать готовые рисунки?
Есть ли ограничение на размер рисунка и количество слоев?
Размер любого слоя ограничен самим окном СС компьютера, можно сделать меньше, но не больше(вроде можно задать размер при создании слоя). А кол-во слоев вроде неограниченное(ну насколько памяти хватит).
-
Смысл
Написал программку из двух файлов для CC1.6 которая позволяет создавать слои, на которых можно "рисовать".
Пока реализовал основной задуманный функционал, позже напишу еще пару плюшек.
Что есть:
-Независимые слои
-Псевдопрозрачность
-Базовые функции для операций над слоями
Что хочу добавить:
-Удаление всех пикселов слоя, не задевая вышестоящих слоев.
-Выборачная отрисовка пикселов слоев.
-Функционал для рисования(линии, боксы и т.п) <частично реализовано>
-Возможность заблокировать, скрыть, перемещать пикселы слоя.
Описание функций layerobj
-Init(anWidth, anHeight, asName, abVis, abLck) - инициализирует объект и позволяет задать начальные параметры, что то вроде конструктора в ООП:
-anWidth - ширина матрицы слоя.
-anHeight - высота матрицы слоя.
-asName - название слоя.
-abVis - не используется.
-abLck - не используется.
-Remove() - деструктор.
-SetPixel(anX, anY, asText, anTextColor, anColor) - записывает символ\цвет символа\цвет фона в соотв. матрицы:
-anX - ордината точки.
-anY - абцисса точки.
-asText - символ или строка, в случае со строкой все ее символы принимают цвет и фон первого.
-anTextColor - цвет символа.
-anColor - цвет фона.
-GetParameters() - возвращает основные параметры слоя: <Обновлено>
-sName - имя слоя.
-nWidth - ширина матрицы слоя.
-nHeight - высота матрицы слоя.-nShiftX, nShiftY
-Shift(anShiftX, anShiftY) - установка смещения слоя по X и Y соответственно. <Добавлено>
-GetPixel(anX, anY) - возвращает информацию о пиксле по координатам anX и anY:
-sText - символ.
-nTextColor - цвет символа.
-nColor - цвет фона.
-ClearLayer() - очищает все матрицы слоя.
Описание функций layermanager
-RegisterLayer(aloLayer) - регестрирует слой в очереди для отрисовки, возвращает его ID.
-UnregisteLayer(anID) - удаляет слой из очереди по ID.
-DrawLayers() - отрисовывает поочередно все слои.
-DrawLayer(aloLayer) - рисует определенный слой.
-ShiftLayer(anID, asDir, anStep) - меняет ID слоя, а собственно и очередь прорисовки:
-anID - смещаемый слой.
-asDir - направление смещения(left и right)
-anStep - на сколько ед. сместить слой.
-LayerClick(anX, anY) - возвращает название слоя и инф-ию о пикселе по заданным координатам:
-sName - ...
-sText - ...
-nTextColor - ...
-nColor - ...
-Info() - дебаговая информация.
-Ряд пока незадействованных функций. <Удалено/Перемещено>LAPIShell
Содержит функции рисования линии и бокса:
-DrawLine(anX1, anY1, anX2, anY2, asChar, anCharColor, anColor, aloLayer) <Добавлено>
-DrawBox(anX1, anY1, anX2, anY2, asChar, anCharColor, anColor, aloLayer) <Добавлено>
FIO
Содержит функции для сохранения\загрузки слоя:
-SaveToFile(asFilename, aloLayer) <Добавлено>
-ReadFromFile(asFilename, aloLayer) <Добавлено>
Установка
Качаем с pastebin на компьютер файл: http://pastebin.com/Nekd2WRU. Используем с помощью os.loadAPI.
Для тех кто зачем-то будет читать мой код:
Аргументы функций: a<type>VarName
Переменная: <type>VarName
Временная переменная: _<type>VarName
<type> - просто сокаращения: n - number, s - string и т.д
Все это дело нужно было только чтобы не путаться с переменными(было такое).-
3
-
-
Что это?
Как то гуляя по бескрайней пустоши ютуба увидал видео с ОС для СС. Там было всплывающее меню, которое выползает при нажатии ПКМ; я неплохо вдохновился(аж так что довел дело до конца, что редко со мной бывает) и написал свой "велосипед" - ведь наверняка уже таких штук много.
Сам не знаю где это дело может пригодится, но это моя первая законченная и работающая писанина на CC/Lua - я доволен

Описание.
AddItem(id, text, func) - добавляет пункт меню, где
id - идентификатор пункта;
text - текст, который выведется в меню;
func - выполняемая функция, при щелчке ЛКМ на пункте.
RemoveItem(id) - удаляет пункт id из меню.
Update() - обрабатывает меню(не могу нормально сформулировать).
В самом коде имеются три константы:
-MAXCHAR - максимальная длина текста пункта меню,
-MAXITEMS - максимальное кол-во пунктов меню,
-BLINKTIME - сколько времени работает подсветка выбранного пункта.
Как использовать.
Для начала нужно скачать два файла с pastebin: rcmenu и utils
(Ссылки на них ниже)
Затем создается отдельный файл, например test, а в нем пишем примерно следующее:
os.loadAPI("rcmenu") info = function(a, b) return function() print(a+b) end end rcmenu.AddItem(1, "Hello", function() print("Hello, world!") end) rcmenu.AddItem(2, "5+10", info(5, 10)) while true do rcmenu.Update() endГде взять.
Взять можно на Pastebin:
-rcmenu: http://pastebin.com/MMnNpjvE
-utils: http://pastebin.com/azd4ZR3h
Вроде все.
Мне бы еще хотелось, чтобы меню после закрытия восстанавливало фон. Пока не знаю, что с этим можно сделать.
P.S. За английский просьба не бить. Пользовался translate.google.ru.
-
2
-

coroutine
в Разные (отсортировать)
Опубликовано: · Изменено пользователем JaggerDer
Хочу реализовать в своей программке "кое что". Мне нужно распараллелить энное число подобных инструкций id, msg = rednet.receive(). Как это сделать с помощью coroutine?
Я просто хочу научиться использовать coroutine. Сколько не втыкал в это, понять не могу, как оно работает.