Перейти к содержимому

Zer0Galaxy

Гуру
  • Публикации

    1 220
  • Зарегистрирован

  • Посещение

  • Победитель дней

    189

Все публикации пользователя Zer0Galaxy

  1. Когда-то давным-давно, когда в майне были только компьютеркрафтовые компы, а метанума и в помине не было, реализовывал я RSA-подобный алгоритм похожим образом. Тогда помню была проблема не с TLWY, а с банальным переполнением, тем не менее ее как то удалось решить. Если в руинах старого хлама найду тот жесткий диск, выложу.
  2. Вот так: function My_func() -- что-то там end Form:addButton(20,5,"Open file", My_func) -- без скобочек Но можно и анонимной функцией Form:addButton(20,5,"Open file", function () -- что-то там -- end)
  3. Я как-то порывался сделать игру - симулятор хакера на подобии Uplink. Только многопользовательскую и ориентированную на Луа, разумеется. Хочешь - сделай.
  4. 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. Короутины сами по себе - довольно сложная для понимания тема (по сравнению с фанкшионами, к примеру). А тут так мало букв использовано для описания библиотеки. Попытался вкурить, что значит "проскочить" несколько подпрограмм и зачем это нужно. Не получилось. Видать, старею
  6. А можно пояснить для бестолковых, что на виосике происходит? Каким образом бесплотная голограмка ловит ПКМ?
  7. Держателем опеннета на облаке С9 был Крутой. Похоже он удалился с облака или его удалили. В любом случае, кому интересна эта тема, рекомендую не ворошить дела давно минувших дней, а написать свою Сеть.
  8. Вопрос не совсем понятен. О какой программе и функции идет речь? Можно пример?
  9. А можно вот здесь ... ... какое нибудь другое слово написать? Да, да, я старый ворчун.
  10. Это я, в общем то, понял из твоей замечательной документации (не сарказм, дока реально отпадная) . Но вопрос мой о другом. Вот нарисовал я на холсте какой-то рисунок и хочу его часть или даже весь стереть. Если весь, то вопросов нет - стираю попиксельно любым цветом (хотя функция brailleCanvas:clear не помешала бы). А если хочу стереть, допустим, только ранее прочерченный отрезок так, что бы он принял цвет фона, но пиксели пересекающегося с ним отрезка не изменили свой цвет? Мне нужно либо каким-то образом извлекать информацию о цвете установленных пикселей из холста, чего виджет не позволяет. Либо хранить эту информацию еще где то. Хотя логика подсказывает, что сбросить пиксель можно вообще ничего не зная о его цвете.
  11. У меня вопрос по виджету brailleCanvas, точнее по его функции set( int x, int y, boolean state, int color ) Какую информационную нагрузку несет значение параметра color в случае, когда state=false? Дело в том, что в текущей реализации виджета, для снятия установленного пикселя необходимо помнить цвета соседних пикселей. В противном случае они могут измениться. Если же вызвать функцию set без параметра color, получаем ошибку. И еще: Какой есть способ выхода из container:startEventHandling() ? Неужели Ctrl + Alt + C единственный способ выхода из программы?
  12. Есть такое. Сказывается квантование времени. Также очень маленькие предметы даже на малых скоростях не всегда правильно взаимодействуют
  13. А нельзя ли функции перемещения 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
  14. В самом деле, чего может быть проще? Вот только всякий раз размещать надписи по центру окна нет необходимости. Теперь у надписи есть свойство l_time.centered=true l_date.centered=true которое автоматически отцентрирует строку.
  15. Сначала глянул на новую аву Затем прочитал этот абзац: Потом подумал: "У Квертика что ли новая ава?" Потом глянул, кто автор темы и всё понял. Кверти, ты когда правильно НЕ / НИ писать научишься? А за игрушку спасибо. Всегда любил подобные игры. А эта, похоже, и под Андроид есть, хоть и платная. Надо поискать халяву.
  16. Сравнение скорости обращения к элементам обычного трехмерного массива и линейного массива, построенного по предлагаемой схеме Вот результат, если кому интересно Как видим, использование обычного массива в три раза эффективнее с точки зрения процессорного времени. Может быть всё дело в том, что для вычисления индекса линейного массива вызывается функция? Попробуем обойтись без функции. 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: Пост написан под впечатлением вот этого заявления:
  17. А, тогда понятно. Но, всё же функция printFormatText сделана малость костыльно. Я бы советовал использовать gmatch, а не перебирать строку посимвольно.
  18. Коли так, объясни мне великий смысл массива функций: 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 } Почему в таблице нельзя было сохранить только значения цветов, а по мере надобности вынимать их, для меня осталось загадкой.
  19. Несколько замечаний или даже предложений: У тебя координаты и размеры каждой кнопки фактически прописаны в виде констант дважды. Первый раз - для прорисовки (функции 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 end drawBox(button.Add) drawBow(button.Cansel) А для проверки нажатия кнопки можно сделать еще одну функцию, скажем: function ifTouch(but, proc) где but - кнопка, а proc - функция, выполняемая при нажатии кнопки. Таким образом программа не будет пестреть числовыми константами и будет намного лучше читаться. А вообще, если пишешь приложения с графическим интерфейсом, рассмотри какую либо GUI-библиотеку. Их у нас на форуме есть несколько.
  20. Никакого бага. Просто для того, что бы начать писать нужно кликнуть по окошку ввода. А Exit - вообще выход из программы. Что ты там писать собрался?
  21. Я участвовал только в качестве подмастерья. Мастером был Крутой.
  22. а можно if require("component").inventory_controller.getInventorySize(i) ~= 0 then или так if require("component").inventory_controller.getInventorySize(i) then ?
×
×
  • Создать...