JaggerDer
Пользователи-
Публикации
34 -
Зарегистрирован
-
Посещение
-
Победитель дней
6
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя JaggerDer
-
Хочу реализовать в своей программке "кое что". Мне нужно распараллелить энное число подобных инструкций id, msg = rednet.receive(). Как это сделать с помощью coroutine? Я просто хочу научиться использовать coroutine. Сколько не втыкал в это, понять не могу, как оно работает.
-
Кстати, когда я узнал о таких шаблонах наворотил такую шнягу: 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.
-
Пикселом я называю символ имеющий цвет и цвет его фона.
-
Итак, добавил пару штук в свой API: -Можно сохранять слой в файл или же загружать из файла(буду благодарен если кто подскажет как можно сжимать информацию о пикселах слоев). -Теперь можно сдвигать слои по x, y(не путать со сдвигом по z).
-
Нет, это не графический редактор. Я хотел сделать библиотеку для работы со слоями куда можно записать и откуда можно прочитать информацию о тексте, цвете - нужно было для чего то, т.к. в СС нельзя получить эту инфу, только нарисовать. Размер любого слоя ограничен самим окном СС компьютера, можно сделать меньше, но не больше(вроде можно задать размер при создании слоя). А кол-во слоев вроде неограниченное(ну насколько памяти хватит).
-
Смысл Написал программку из двух файлов для 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 и т.д Все это дело нужно было только чтобы не путаться с переменными(было такое).
-
Что это? Как то гуляя по бескрайней пустоши ютуба увидал видео с ОС для СС. Там было всплывающее меню, которое выползает при нажатии ПКМ; я неплохо вдохновился(аж так что довел дело до конца, что редко со мной бывает) и написал свой "велосипед" - ведь наверняка уже таких штук много. Сам не знаю где это дело может пригодится, но это моя первая законченная и работающая писанина на 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 ответа
-
- 2
-
