Zer0Galaxy
-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Сообщения, опубликованные пользователем Zer0Galaxy
-
-
13 часа назад, ov3rwrite сказал:растянуто в 2 раза из-за прямоугольного разрешения 1 символа
Рисовать можно не символами, а полусимволами или даже шрифтом брайля
-
1
-
-
Кто или что определяет, является ли компьютер корнем или нет?
Можно ли объединить две сети в одну? Кто при этом станет корнем?
Правильно ли я понял, что корень должен знать пути абсолютно ко всем абонентам сети?
А что будет если корень выключить?
Как осуществляется связь между серверами?
-
Думаю, нужно различать пользовательские узлы и роутеры, чтобы кто то, просто подключившись на пять минут, не нарушал маршрутизацию.
-
21 минуту назад, Doob сказал:Наверно стоит сделать пинг перед отправкой сообщения, а не по таймеру.
Процедура ping() затрагивает только соседние узлы или всю сеть? Если всю, то будет слишком накладно делать пинг перед каждым сообщением. Если только соседей, то может не обнаружить потерю узла, стоящего за соседним.
-
Что собой представляет адрес?
Как он генерируется?
Как узнать свой адрес?
Событие moonlink_message возвращает адрес получателя. А можно ли узнать адрес отправителя?
Интересует алгоритм динамической маршрутизации. Как часто обновляются таблицы маршрутизации? Если за секунду до отправки пакета отвалится один из промежуточных узлов, будет ли найден обходной путь или пакет потеряется?
-
Кажется понял о чем ты. Нужно дать возможность получать доступ к родительскому объекту. В принципе, этот доступ есть через метатаблицу:
getmetatable(self).draw(self) -- вызываем родительский методКоряво, конечно. Нужно будет подумать над чем-то вроде:
self.inherited:draw()-
1
-
1
-
-
@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)-
1
-
-
11 минуту назад, AlexCatze сказал:Не хватает таких элементов как CheckBox, Selector и ScrollBar.
Если есть опыт ООП программирования, могу помочь в создании новых компонентов. Для этого не обязательно менять либу, можно создать свой собственный компонент, который используешь только ты. Если понравится, добавлю компонент в либу, а тебя в соавторы.
13 минуты назад, AlexCatze сказал:Хотелось бы иметь возможность делать вокруг кнопки обводку.
Кнопка имеет свойство border. Если его установить в 1 или 2, кнопка получит одинарную или двойную окантовку. Но имей в виду, что размеры кнопки должны быть достаточными что бы вместить надпись и окантовку. Т.е. высота должна быть не менее трех.
-
1
-
-
16 часов назад, AlexCatze сказал:С кодом можно ознакомится на складе грязи
А аквадискотека будет?
А теперь серьёзно. Сразу скажу, код не читал в виду отсутствия времени. Но из описания сети возникло несколько вопросов:
1. Правильно ли я понял, что ЕнотоСеть в отличии от OpenNet имеет не древовидную структуру, а облачную? Т.е. в сети, состоящей более чем из двух роутеров возможны циклы. Каким образом планируется избегать зацикливания пакетов?
2. Маршрутизация в ON осуществлялась элементарно. Роутер, получив пакет, по IP получателя определял предназначен ли этот пакет связанному с ним клиенту. Если да, передавал пакет этому клиенту. Если нет, передавал пакет на уровень выше и это становилось головняком вышестоящего роутера. Как здесь? Предусмотрены ли таблицы маршрутизации? Заполняются ли они вручную или автоматически? С какой периодичностью обновляются?
3. Какова структура IP-адреса? Из описания понял, что это IP роутера + ID карты клиента. А кто выдает IP роутеру? Вышестоящий роутер? Но ведь сеть безуровневая.
-
1
-
-
А еще, я бы убрал вызов Repeat() из самого себя. Рекурсия это сильнодействующее средство и применять ее нужно только по назначению врача.
-
2
-
1
-
2
-
1
-
-
Почему бы не сделать так?
while computer.pullSignal(5) do;В этом случае робот очистит очередь сигналов прежде чем начать отсчет таймаута.
-
10 часов назад, ECS сказал:str:gsub("\\u([a-fA-F%d]+)", function(code)
return unicode.char(tonumber(code, 16))
end)
Если не ошибаюсь, существует шаблон для шестнадцатеричных символов - %x
-
2
-
1
-
-
11 час назад, ov3rwrite сказал:Некропостинг, но можно как то из onChange объекта List достать элемент, который был выбран?
Порылся в коде и обнаружил, что событие 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]
-
1
-
-
@NEO порог вхождения не больше чем в Луа. Всё дело, с какой стороны входить. Да, согласен, слов порядок странный довольно. Но всё это дело привычки.
Для программирования на Форте разбираться с памятью и регистрами совсем не обязательно. Стек нужен, но что с ним разбираться. Стек он и в Африке стек.
Эх, где мои семнадцать лет? Свой первый компилятор я написал на бэйсике. Было это что-то фортоподобное, хотя о Форте я тогда и слыхом не слыхивал.
-
1
-
-
14 часа назад, Doob сказал:...
Так это будет нашлепка на OpenOS или самостоятельная Forth-система, стартующая из Eeprom?
-
1
-
-
Дроны и микроконтроллеры работают без OpenOS, а OpenOS первым делом начинает принтить на экран. Как отработает print, когда gpu=nil?
-
37 минут назад, NEO сказал:Решение топорное и не оптимальное, при изменении одной ячейки передавать всю матрицу. Выходит 2000 операций gpu.get.
Матрица там передается не по изменению ячейки, а по нажатию F5. Вполне себе нормально, если нужно лишь изредка поглядывать на экран.
10 минут назад, nikitaaaaa сказал:Я не смог установить ни одну прогу или вылетает или зависает
Что и где ты устанавливал? Как запускал? Какие скрины получал?
-
26 минут назад, NEO сказал:Что мешает гпу без монитора работать? Не помню таких моментов. В тз не сказано что гпу отсутствует.
Я не говорил про монитор. Я говорил про видеокарту. component.gpu возвращает прокси видеокарты. Карты нет - и прокси не будет. Хотя, желающие могут проверить. Мне даже интересно, запустится ли комп без видюхи?
-
8 минут назад, nikitaaaaa сказал:Да знаю но вот только моя тупая голова так и говорит этот язык не для тебя
Откуда ты знаешь, на что способна твоя голова, если еще не пробовал.
К стати решение твоей проблемы уже есть.
-
10 часов назад, NEO сказал:сделай обертки к операциям гпу и передавай по модему данные о выводе.
Робот без монитора и, наверное, без видеокарты. Что бы гпу работал, видушку поставить придется.
29 минут назад, nikitaaaaa сказал:Мммм круто только я ничего в этом не понимаю
Ну, так это отличный повод начинать понимать.
-
Как все таки тут создавать файлы?
-
Для рисования линий рекомендую алгоритм Брезенхема. Не использует тригонометрию и линия на много ровнее получается.
-
2
-
-
В 20.09.2020 в 18:27, Griffi сказал:_G.forms=forms _G.TComponent=TComponent _G.gpu=gpu
А зачем _G?
Стесняюсь спросить, а о чем вообще речь? Где в коде либы подобные строки? Хотя, давно это было. Может, я и подзабыл чего.

"Лёгкая" библиотека GUI
в Графика
Опубликовано:
@hohserg, очистку экрана можно ставить не после forms.stop(), а после forms.run(). Стопов может быть много, а run только один.