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

Doob

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

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

  • Посещение

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

    141

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

  1. Хм.. И правда, это дикий костыль, надо будет переделать. А название файла в сообщении, чтобы потом приспособить параллельный прием нескольких файлов.
  2. Нет предела совершенству. Сделал более компактную версию без излишеств и современных технологий. А это можно запустить прямо в интерпретаторе (259 байт): r=require('component').robot l,d=io.read(),function(s)while r.detect(s)do r.swing(s)end os.sleep()end for i=1,l do d(3)r.move(3)r.turn(false)for j=1,2 do d(3)d(1)r.move(1)d(3)end r.turn(false)r.turn(false)for k=1,2 do d(3)d(0)r.move(0)d(3)end r.turn(false)end В терминале пишем 'lua', копируем туда строку, жмем 'Enter', вводим длину туннеля, жмем 'Enter' и все.
  3. Новички используют эту программу, но не знают, какие опасности она таит. Нету проверки пустых блоков, в результате робот делает лишние движения. По-быстрому перевел tunnel из ComputerCraft, хоть и не такая компактная, зато надежная. http://pastebin.com/r78QEYFG
  4. pastebin get 6x9YtbrX file_sender Немного неказисто, но задачу выполняет. Чтобы включить ожидание файла пишем: file_sender receive <имя файла> (если хотим заменить оригинальное имя файла) Выскочит сообщение выбора модема - вводим 'modem' для обычной платы, 'tunnel' для связанной. На передающем компе пишем: file_sender send <имя файла> Далее так же выбираем нужный тип модема. Не сделал чтение файла частями, поэтому он весь загружается в оперативу - размер передаваемого файла ограничен свободной памятью. К тому-же нет выбора модема-партнера для обычных модемов, все пересылается через broadcast.
  5. У меня вообще никаких проблем с ночью, ибо живу под землей на полу-блоках. Наголосовал на нормальные солярки - круглые сутки энергия не кончается. Самому ничего делать не надо, везде можно послать робота работать за меня.
  6. На ум сразу приходят пару идей: Сделать менеджер оперативной памяти и грузить программы через него, как через lua.lua Если известно имя функции, то string.dump Парсить всю память по рабочим индексам, если ~= nil, то занести в таблицу, но как найти нужный код я без понятия и как сразу дампить все окружения тоже.
  7. Doob

    RemainInMotion.

    Подарок лагдромщикам... В RedPower делал проходческий щит на блокбрейкерах. Приходилось сразу выключать, как в чат орали "ЛАГИИИИ", чтобы меня не запалили и не забанили.
  8. Doob

    Морской Бой

    Смысл? Если есть дебаг-карта, то и разрешение на взрывы можно выпросить))
  9. Doob

    Морской Бой

    Можно сделать морской бой на дебаг-картах, чтобы корабли выстреливали заряженный TNT и попадания проверялись через testforblock. При определенном проценте повреждений корабль тонет, можно еще добавить возможность перемещать корабли во время боя. Только есть два минуса - нужна дебаг-карта и много места. Но зато будет намного зрелищней.
  10. Довольно очевидная реализация 4Д: http://gamegame.2970143.pix-cdn.org/games/140053.swf
  11. GML слишком тяжел, использовать его только в одной программе не рационально. В ОС интерфейсы создаются так же как и в СС. Для кнопки надо перехватывать эвенты касания или клика, и запускать нужную функцию при совпадении координат. К примеру в таблице хранятся координаты первой кнопки: tbl = {Xmin = 10, Ymin = 10, Xmax = 15, Ymax = 15} При эвенте клика проверяем координаты эвента: if x >= tml.Xmin and y >= tbl.Ymin and x <= tbl.Xmax and y <= tbl.Ymax then ... end Для переключения между элементами при помощи стрелок просто элементы храним в таблице, а эвенты нажатия на стрелки запускают смещение + или - по таблице, соответственно подсвечивая выбранный элемент из координат в таблице. Вот пара туторов по СС: http://www.computercraft.info/forums2/index.php?/topic/11046-clickable-buttons-in-cc/ http://www.computercraft.info/forums2/index.php?/topic/16925-how-to-create-a-touch-screen-on-a-terminal/
  12. Тогда не париться и делать сразу морской бой с TNT и подвижными кораблями.
  13. Если интересно, то направление из азимута можно задать так: x = math.cos(a)*p y = math.sin(a)*p Где p это число для округления до целых блоков с необходимой точностью. Чтобы управлять параболой, кажется, надо ее делить на квадратный корень из фокального расстояния и умножить на расстояние. А лучше сделать пристрелку и вывести таблицу дальности, как в минометах.
  14. Эта тема мне напоминает, как на КК я сделал черепашку-архиватор. В общем, используя блок шерсти как пол байта черепаха строила столбы с закодированным сообщением, бессмысленно, но работает!
  15. Да, это удобный способ, просто и эффективно, без лишних телодвижений.
  16. Дурака за меня не держи, я знаю, что такое ASCII Я же показывал картинки? Камера сканирует расстояние, а не прямоугольники. Т. е. ровная стена будет выглядеть цветными кругами, а чистый бедрок, с расстояния 5-10 блоков больше чем на половину выглядит шумом. Статистику я собрал и понял, что любое сообщение приходит моментально, а сжатие и рендер отнимают непозволительно много времени, особенно когда изображение только начало отрисовываться, а уже понятно, что надо сменить ракурс. Мой вывод - сжатие не необходимость, а понты, вроде шифрования, когда есть modem.send
  17. Скобки и пробелы для понтов! Долой скобки и пробелы!
  18. Кхм... Что есть сжатие? Берем данные, которые надо сжать: AAABBBCDDDDEE Для сжатия используем набор кодирующих индексов: 0 = A 1 = B 2 = C 3 = D 4 = E 5 = AA 6 = BB 7 = CC 8 = DD 9 = EE Щ = AAA К = BBB Ж = CCC Ю = DDD Х = EEE Ъ = AAAA Л = BBBB Н = CCCC И = DDDD У = EEEE Проходим по сжимаемому сообщению, подбирая подходящий индекс от самого эффективного к менее эффективному. В итоге получаем это: AAABBBCDDDDEE = ЩК2И9 Считаем количество символов в исходном тексте и в сжатом. Вход = 13 Выход = 5 (5/13)*100 = 38.46% Исходный текст был сжат на 38.46% Картинка может оказаться шумовой, в этом случае алгоритм сжатия только отнимет время. Дельта-кодирование это всего-лишь кодирование, у меня используется ничем не хуже, к тому же адаптированно к простому алгоритму сжатия.
  19. Кстати, спасибо за идею, я goto за цикл не считал, надо проверить потери времени при его использовании.
  20. Попробую по-порядку. Имеется ввиду используемых в программе цветов. Повторное кодирование повторяющихся символов, т. е. уже сжатие. Из предыдущего вывода - 1 символ, 2 символа, 4 символа, 8, 16. Из здравого смысла - максимально возможное сжатие - в 16 раз (т. е. 16 символов идущих подряд кодируются одним) Сжатие в этой теоретической пещере равно 0%, потому что шум сжать невозможно.
  21. ::a::robot.use()goto a -- 22 символа А вообще, это не работает, я замерял - кпд меньше 100%
  22. Doob

    Digital rain

    Хм.. Надо попробовать генерировать рандомный текст на весь экран, а потом палитрой рисовать линии, но вряд-ли это что-то изменит, кроме смазливости изображения. P.S. Можно ускорить убрав в генераторе линий os.sleep() изменив число в генераторе новых позиций с 6 на 30, но тогда дождь будет идти волнами.
  23. Doob

    Digital rain

    Эм... А как оно ускорит работу? Все-равно беда в циклах.
  24. Можно и без графики, вводить только азимут и дальность выстрела.
  25. Конечно индексы, цвета не в лезут в сообщение... Хотя можно разбить на пакеты... У меня 46 цветов, т. е. 46 индексов для одного символа, для сжатия берем 46 для двух идущих подряд, 46 для 4х, 46 для 8, 46 для 16... Следовательно, в общем имеем 46*5 = 230 индексов с индексами сжатия, в идеальных условиях (в пределах видимости 33 блока нету никаких блоков) процент сжатия равен ( ( ширина передаваемого изображения / 16 ) * длинна передаваемого изображения) / (ширина*длинна) Но, если камера в пещере, где блоки находятся на рандомном расстоянии, то сжатие = 0%, тогда какая разница сжимать или не сжимать?
×
×
  • Создать...