Zer0Galaxy
Гуру-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя Zer0Galaxy
-
@hohserg, очистку экрана можно ставить не после forms.stop(), а после forms.run(). Стопов может быть много, а run только один.
-
Рисовать можно не символами, а полусимволами или даже шрифтом брайля
- 3 ответа
-
- 1
-
-
Кто или что определяет, является ли компьютер корнем или нет? Можно ли объединить две сети в одну? Кто при этом станет корнем? Правильно ли я понял, что корень должен знать пути абсолютно ко всем абонентам сети? А что будет если корень выключить? Как осуществляется связь между серверами?
- 6 ответов
-
- opencomputers
- lua
-
(и ещё 1 )
Теги:
-
Думаю, нужно различать пользовательские узлы и роутеры, чтобы кто то, просто подключившись на пять минут, не нарушал маршрутизацию.
- 8 ответов
-
- opencomputers
- moonlink
-
(и ещё 2 )
Теги:
-
Процедура ping() затрагивает только соседние узлы или всю сеть? Если всю, то будет слишком накладно делать пинг перед каждым сообщением. Если только соседей, то может не обнаружить потерю узла, стоящего за соседним.
- 8 ответов
-
- opencomputers
- moonlink
-
(и ещё 2 )
Теги:
-
Что собой представляет адрес? Как он генерируется? Как узнать свой адрес? Событие moonlink_message возвращает адрес получателя. А можно ли узнать адрес отправителя? Интересует алгоритм динамической маршрутизации. Как часто обновляются таблицы маршрутизации? Если за секунду до отправки пакета отвалится один из промежуточных узлов, будет ли найден обходной путь или пакет потеряется?
- 8 ответов
-
- opencomputers
- moonlink
-
(и ещё 2 )
Теги:
-
Кажется понял о чем ты. Нужно дать возможность получать доступ к родительскому объекту. В принципе, этот доступ есть через метатаблицу: getmetatable(self).draw(self) -- вызываем родительский метод Коряво, конечно. Нужно будет подумать над чем-то вроде: self.inherited:draw()
-
@hohserg, а что должна содержать базовая таблица? Что ты имеешь в виду под "более обобщенным кодом"? Приведи пример, пожалуйста.
-
@AlexCatze, не могу представить зачем нужно событие перерисовки элемента. Ну допустим, я хочу просто посчитать сколько раз была отрисована та или иная кнопка. Лучше сделать это не влезая в метод TComponent:draw, поскольку TComponent:draw вызывается абсолютно для всех компонентов, а меня интересует только одна кнопка. Это делается при помощи магии ООП, называемой полиморфизм. Вот пример кода: Btn1=Form1:addButton(65,21,"Кнопка") -- создаем кнопку Cnt1=Form1:addLabel(10,5,0) -- создадим метку со счетчиком событий function Btn1.onDraw() -- определяем событие onDraw для кнопки Btn1, Cnt1.caption=Cnt1.caption+1 -- которое увеличивает счетчик Cnt1:redraw() -- и перерисовывает метку end function Btn1:draw() -- переопределяем метод draw для кнопки Btn1, в котором TButton.draw(self) -- вызываем родительский метод if self.onDraw then self.onDraw() end -- и если надо, обработчик события onDraw end В этом случае выполнять проверку if self.onDraw не обязательно, поскольку переопределенный метод draw работает только для кнопки Btn1. А метод TComponent:draw остается без изменений. Но поковыряться в библиотеке forms таки придется. Дело в том, что объект TButton является локальным и недоступен во внешних модулях. Просто убери слово local в этой строке: ------------------Button---------------- local TButton=setmetatable({W=10, H=1, color=0x606060, type=function() return "Button" end},TComponent)
-
Если есть опыт ООП программирования, могу помочь в создании новых компонентов. Для этого не обязательно менять либу, можно создать свой собственный компонент, который используешь только ты. Если понравится, добавлю компонент в либу, а тебя в соавторы. Кнопка имеет свойство border. Если его установить в 1 или 2, кнопка получит одинарную или двойную окантовку. Но имей в виду, что размеры кнопки должны быть достаточными что бы вместить надпись и окантовку. Т.е. высота должна быть не менее трех.
-
А аквадискотека будет? А теперь серьёзно. Сразу скажу, код не читал в виду отсутствия времени. Но из описания сети возникло несколько вопросов: 1. Правильно ли я понял, что ЕнотоСеть в отличии от OpenNet имеет не древовидную структуру, а облачную? Т.е. в сети, состоящей более чем из двух роутеров возможны циклы. Каким образом планируется избегать зацикливания пакетов? 2. Маршрутизация в ON осуществлялась элементарно. Роутер, получив пакет, по IP получателя определял предназначен ли этот пакет связанному с ним клиенту. Если да, передавал пакет этому клиенту. Если нет, передавал пакет на уровень выше и это становилось головняком вышестоящего роутера. Как здесь? Предусмотрены ли таблицы маршрутизации? Заполняются ли они вручную или автоматически? С какой периодичностью обновляются? 3. Какова структура IP-адреса? Из описания понял, что это IP роутера + ID карты клиента. А кто выдает IP роутеру? Вышестоящий роутер? Но ведь сеть безуровневая.
- 81 ответ
-
- 1
-
-
А еще, я бы убрал вызов Repeat() из самого себя. Рекурсия это сильнодействующее средство и применять ее нужно только по назначению врача.
- 4 ответа
-
- 6
-
-
-
-
-
Почему бы не сделать так? while computer.pullSignal(5) do; В этом случае робот очистит очередь сигналов прежде чем начать отсчет таймаута.
-
Если не ошибаюсь, существует шаблон для шестнадцатеричных символов - %x
-
Порылся в коде и обнаружил, что событие onChange принимает три параметра: 1)выбранная строка списка(string), 2)элемент, соответствующий этой строке(любой lua-тип) и 3)имя пользователя, выполнившего клик(string). Поэтому элемент можно достать, например, так: function onListChange(line,item,user) local selectedItem = item end List1=Form1:addList(left,top,onListChange) Кроме того, выбранный элемент списка всегда (не только из onChange) доступен как List1.items[List1.index]
-
@NEO порог вхождения не больше чем в Луа. Всё дело, с какой стороны входить. Да, согласен, слов порядок странный довольно. Но всё это дело привычки. Для программирования на Форте разбираться с памятью и регистрами совсем не обязательно. Стек нужен, но что с ним разбираться. Стек он и в Африке стек. Эх, где мои семнадцать лет? Свой первый компилятор я написал на бэйсике. Было это что-то фортоподобное, хотя о Форте я тогда и слыхом не слыхивал.
-
Так это будет нашлепка на OpenOS или самостоятельная Forth-система, стартующая из Eeprom?
-
Дроны и микроконтроллеры работают без OpenOS, а OpenOS первым делом начинает принтить на экран. Как отработает print, когда gpu=nil?
-
Матрица там передается не по изменению ячейки, а по нажатию F5. Вполне себе нормально, если нужно лишь изредка поглядывать на экран. Что и где ты устанавливал? Как запускал? Какие скрины получал?
-
Я не говорил про монитор. Я говорил про видеокарту. component.gpu возвращает прокси видеокарты. Карты нет - и прокси не будет. Хотя, желающие могут проверить. Мне даже интересно, запустится ли комп без видюхи?
-
Откуда ты знаешь, на что способна твоя голова, если еще не пробовал. К стати решение твоей проблемы уже есть.
-
Робот без монитора и, наверное, без видеокарты. Что бы гпу работал, видушку поставить придется. Ну, так это отличный повод начинать понимать.
-
Как все таки тут создавать файлы?
-
Для рисования линий рекомендую алгоритм Брезенхема. Не использует тригонометрию и линия на много ровнее получается.
- 9 ответов
-
- 2
-
-
- opencomputers
- lua
-
(и ещё 3 )
Теги:
-
Стесняюсь спросить, а о чем вообще речь? Где в коде либы подобные строки? Хотя, давно это было. Может, я и подзабыл чего.
