Zer0Galaxy
-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Сообщения, опубликованные пользователем Zer0Galaxy
-
-
Привет! Поясните как должен выглядеть вызов функции по кнопке.
Так
Form:addButton(20,5,"Open file",function() Моя функция() end)
или так?
Form:addButton(20,5,"Open file", Моя функция())
Вот так:
function My_func() -- что-то там end Form:addButton(20,5,"Open file", My_func) -- без скобочек
Но можно и анонимной функцией
Form:addButton(20,5,"Open file", function () -- что-то там -- end)
-
Я как-то порывался сделать игру - симулятор хакера на подобии Uplink. Только многопользовательскую и ориентированную на Луа, разумеется. Хочешь - сделай.Все уже написано. Даже для мода на майнкрафт. Я разочаровался :с И что, нет никаких нереализованных проблем? Серьезно? -
if errorCode == 0 then return "Code is valid" elseif errorCode > 0 then return "Error: Opening bracket(s) missing" elseif errorCode < 0 then return "Error: Closing bracket(s) missing" else return "Error: Unknown error" endВспомнился анекдот:
Если выпадет орел, идем пить пиво, если решка – идем в кино, а если монета встанет на ребро, то пойдем учиться.-
5
-
1
-
1
-
-
Короутины сами по себе - довольно сложная для понимания тема (по сравнению с фанкшионами, к примеру). А тут так мало букв использовано для описания библиотеки. Попытался вкурить, что значит "проскочить" несколько подпрограмм и зачем это нужно. Не получилось. Видать, старею

-
1
-
-
...
А можно пояснить для бестолковых, что на виосике происходит? Каким образом бесплотная голограмка ловит ПКМ? -
ссылка поломались
Держателем опеннета на облаке С9 был Крутой. Похоже он удалился с облака или его удалили. В любом случае, кому интересна эта тема, рекомендую не ворошить дела давно минувших дней, а написать свою Сеть.
-
Её функции возможно переделать так, что бы название файла, порта вбивать в программе? Да и вообще что бы при вызове функции это всё срабатывало и не нужно было в терминале вбивать?
(Очень хочу, но не позволяет барьер написания)
Вопрос не совсем понятен. О какой программе и функции идет речь? Можно пример?
-
А можно вот здесь ...

... какое нибудь другое слово написать?
Да, да, я старый ворчун.
-
Параметр state отвечает за непосредственное отображение брайль-пикселя, т.е. будет ли вообще этот брайль-пиксель рисоваться на экране. А color - это цвет текущей группы из 2x4 брайль-пикселей (обычный цвет текста пикселя gpu)
Это я, в общем то, понял из твоей замечательной документации (не сарказм, дока реально отпадная) . Но вопрос мой о другом. Вот нарисовал я на холсте какой-то рисунок и хочу его часть или даже весь стереть. Если весь, то вопросов нет - стираю попиксельно любым цветом (хотя функция brailleCanvas:clear не помешала бы).
А если хочу стереть, допустим, только ранее прочерченный отрезок так, что бы он принял цвет фона, но пиксели пересекающегося с ним отрезка не изменили свой цвет? Мне нужно либо каким-то образом извлекать информацию о цвете установленных пикселей из холста, чего виджет не позволяет. Либо хранить эту информацию еще где то. Хотя логика подсказывает, что сбросить пиксель можно вообще ничего не зная о его цвете.
-
У меня вопрос по виджету brailleCanvas, точнее по его функции set( int x, int y, boolean state, int color )
Какую информационную нагрузку несет значение параметра color в случае, когда state=false?
Дело в том, что в текущей реализации виджета, для снятия установленного пикселя необходимо помнить цвета соседних пикселей. В противном случае они могут измениться. Если же вызвать функцию set без параметра color, получаем ошибку.
И еще:
Какой есть способ выхода из container:startEventHandling() ?
Неужели Ctrl + Alt + C единственный способ выхода из программы?
-
Попробуй так
rs.setOutput (sides[side], 15)-
1
-
-
Минус её, на больших скоростях физика не работает, топорно очень, примитивно.
Пытался сделать пушку, но из за больших скоростей плохо получается контролировать выстрел.
Есть такое. Сказывается квантование времени. Также очень маленькие предметы даже на малых скоростях не всегда правильно взаимодействуют
-
1
-
-
Да. Когда - то я в ней днями сидел.
Ты со скриптами разобрался? Какие доки читал?
-
А интересовался кто либо программированием в Algodoo?
-
А нельзя ли функции перемещения u(), d(), fw(), bw() сделать с параметром на сколько блоков переместиться?
И еще, рекурсия в данном случае не самое лучшее решение.
function robolib.u() while r.detectUp() do r.swingUp() end if r.up() then if waySw then way = way.."U" end else robolib.u() end z = z + 1 end -
В самом деле, чего может быть проще?

Вот только всякий раз размещать надписи по центру окна нет необходимости.
Теперь у надписи есть свойство
l_time.centered=true l_date.centered=true
которое автоматически отцентрирует строку.
-
1
-
-
Сначала глянул на новую аву

Затем прочитал этот абзац:
Но всё осложняется тем, что у нас нет нЕ функций, нЕ циклов, нЕ умножения, нЕ деления, нЕ функций возведения модуля, нЕ даже возможности указывать свои произвольные условияПотом подумал: "У Квертика что ли новая ава?"
Потом глянул, кто автор темы и всё понял.
Кверти, ты когда правильно НЕ / НИ писать научишься?
А за игрушку спасибо. Всегда любил подобные игры. А эта, похоже, и под Андроид есть, хоть и платная. Надо поискать халяву.
-
3
-
-
Сравнение скорости обращения к элементам обычного трехмерного массива и линейного массива, построенного по предлагаемой схеме
uptime=require("computer").uptime --Создадим два трехмерных массива, один обычный вида M[x][y][z] --другой линейный, в котором общий индекс будет вычисляться по формуле вида id=x+y*80+z*80*64 --Функция для вычисления общего индекса --Частные индексы x,y,z могут изменяться в диапазонах 1-XX, 1-YY, 1-ZZ соответственно --Общий индекс изменяется в диапазоне 1 - XX*YY*ZZ function id(x,y,z) return x+XX*(y-1)+XX*YY*(z-1) end --Изначально массивы будут заполнены нулями, чтобы создание элементов массивов не повлияло на результат --Затем заменим все элементы каждого массива на другие числа --Размерность массивов XX, YY, ZZ=80, 64, 20 --количество повторов N=100 --Обычный трехмерный массив Arr1={} for i=1,XX do Arr1[i]={} for j=1,YY do Arr1[i][j]={} for k=1,ZZ do Arr1[i][j][k]=0 end end end --Линейный массив Arr2={} for i=1,XX do for j=1,YY do for k=1,ZZ do Arr2[id(i,j,k)]=0 end end end --Произведем измерение времени, необходимого для изменения всех элементов массива --Для повышения точности замера изменение проведем N раз start=uptime() for m=1,N do for i=1,XX do for j=1,YY do for k=1,ZZ do Arr1[i][j][k]=m end end end end print("Обычный массив "..uptime()-start.." секунд") start=uptime() for m=1,N do for i=1,XX do for j=1,YY do for k=1,ZZ do Arr2[id(i,j,k)]=m end end end end print("Линейный массив "..uptime()-start.." секунд")Вот результат, если кому интересно

Как видим, использование обычного массива в три раза эффективнее с точки зрения процессорного времени.
Может быть всё дело в том, что для вычисления индекса линейного массива вызывается функция?
Попробуем обойтись без функции.
Arr2[i+XX*(j-1)+XX*YY*(k-1)]=m
хотя я так бы делать не стал, поскольку читабельность падает на порядок

Немного лучше, но выводы делайте сами.
PS: Если при вычислении индекса избавиться от лишнего умножения и вычитания единицы (Arr2[i+XX*j+XY*k]=m, где XY=XX*YY, при этом частные индексы изменяются от нуля), получим результат еще лучше - 0.89 секунд.
PS PS: Пост написан под впечатлением вот этого заявления:
Не стоит сильно экономить память в опенкомпах, т. к. ее очень много, а процессор крайне медленный.-
3
-
-
А, тогда понятно. Но, всё же функция printFormatText сделана малость костыльно. Я бы советовал использовать gmatch, а не перебирать строку посимвольно.
-
Коли так, объясни мне великий смысл массива функций:
local colorsTable = { ['&0'] = function() color(0x000000) end, ['&1'] = function() color(0x0000AA) end, ['&2'] = function() color(0x00AA00) end, ['&3'] = function() color(0x00AAAA) end, ['&4'] = function() color(0xAA0000) end, ['&5'] = function() color(0xAA00AA) end, ['&6'] = function() color(0xFFAA00) end, ['&7'] = function() color(0xAAAAAA) end, ['&8'] = function() color(0x555555) end, ['&9'] = function() color(0x5555FF) end, ['&a'] = function() color(0x55FF55) end, ['&b'] = function() color(0x55FFFF) end, ['&c'] = function() color(0xFF5555) end, ['&d'] = function() color(0xFF55FF) end, ['&e'] = function() color(0xFFFF55) end, ['&f'] = function() color(0xFFFFFF) end, ['&r'] = function() color(0xFFFFFF) end }Почему в таблице нельзя было сохранить только значения цветов, а по мере надобности вынимать их, для меня осталось загадкой.
-
Несколько замечаний или даже предложений:
У тебя координаты и размеры каждой кнопки фактически прописаны в виде констант дважды. Первый раз - для прорисовки (функции drawMenu), второй раз - для обработки события touch. А что это значит? Это значит, что если ты или кто нибудь другой захочет добавить или переместить кнопку, ему это придется сделать в двух местах программы, что существенно увеличивает вероятность ошибки.
Я бы на твоем месте все кнопки хранил в одной таблице. Как то так
button={ Add ={x=27,y=24,width=15,height=3,col=color.general,txt="Добавить",align=3}, Cansel={x=47,y=24,width=15,height=3,col=color.general,txt="Отменить",align=3}, -- и так далее }тогда вызов функции прорисовки кнопки можно будет оформить так
function drawBox(but) color(but.col) g.fill(but.x,but.y,1,but.height,'│') g.fill(but.x+but.width-1,but.y,1,but.height,'│') g.set(but.x,but.y,'┌'..rep('─',but.width-2)..'┐') g.set(but.x,but.y+but.height-1,'└'..rep('─',but.width-2)..'┘') if but.txt then g.set(but.x+but.align,but.y+1,but.txt) end enddrawBox(button.Add) drawBow(button.Cansel)
А для проверки нажатия кнопки можно сделать еще одну функцию, скажем:
function ifTouch(but, proc)
где but - кнопка, а proc - функция, выполняемая при нажатии кнопки.
Таким образом программа не будет пестреть числовыми константами и будет намного лучше читаться.
А вообще, если пишешь приложения с графическим интерфейсом, рассмотри какую либо GUI-библиотеку. Их у нас на форуме есть несколько.
-
2
-
-
В 5-м посте, скрипт - баг https://imgur.com/a/SGzPO. Нажимаешь Exit - не можешь писать в том окне, а начинает вне него, и оно не изчезает. Нажимаешь отправить - то же самое.Никакого бага. Просто для того, что бы начать писать нужно кликнуть по окошку ввода.
А Exit - вообще выход из программы. Что ты там писать собрался?
-
Я участвовал только в качестве подмастерья. Мастером был Крутой.
-
а можноif require("component").inventory_controller.getInventorySize(i) == 27 then -- Изменить число 27, если сундук другойif require("component").inventory_controller.getInventorySize(i) ~= 0 thenили так
if require("component").inventory_controller.getInventorySize(i) then?

RSA
в Сетевые технологии
Опубликовано:
Когда-то давным-давно, когда в майне были только компьютеркрафтовые компы, а метанума и в помине не было, реализовывал я RSA-подобный алгоритм похожим образом. Тогда помню была проблема не с TLWY, а с банальным переполнением, тем не менее ее как то удалось решить. Если в руинах старого хлама найду тот жесткий диск, выложу.