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

swg2you

Пользователи
  • Публикации

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

  • Посещение

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

    20

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

  1. "Лучше молчать и показаться дураком, чем заговорить и развеять все сомнения." Марк Твен
  2. swg2you

    Digital rain

    Угу. Я на 61-м много кодил ) Как еггоголог могу сказать, что описание мониторов и гпу, в официальной вики, не соответствует действительности. Монитор тир2 умеет 16 переопределяемых цветов Монитор тир3 умеет 16 переопределяемых и 240 фиксированных (всего 256). 16 переопределяемых цветов в тир3 занимают место градации серого, из стандартной палитры 6*8*5+16, поэтому их изменение портит оттенки серого. Цвет в виде 0xRRGGBB - фикция, при записи, цвет будет приведен к ближайшему из палитры монитора (16 для тир2 и 256 для тир3) Поэтому, в любом случае, для хранения цвета знакоместа (фон/символ) в тир2 достаточно 1 байт, тир3 -2 байта. Еще одна особенность. Запись "широкого" юникод-символа в знакоместо, затирает следующее знакоместо пробелом.
  3. Как нечего? о_О more стандартную перепишите, чтоб она поток использовала. а то вместо правильного more в open os жуть какая-то )
  4. swg2you

    Digital rain

    все что выводится таким методом: gpu.setForeground(i, true), где i = 0..15 - индекс цвета в палитре можно поменять сделав: gpu.SetPaletteColor(i, 0x654321) - изменив цвет индекса палитра, по сути, таблица цветов, а индекс - номер цвета. зы1 не забывайте сохранять палитру и восстанавливать после. зы2 типичное применение плавное появление/затухание изображения (фейдинг) local c1=gpu.getPaletteColor(1) --сохраняем значение первого цвета gpu.setPaletteColor(1, 0x000000) --гасим первый цвет gpu.setForeground(1, true) -- задаем его для вывода print('Hello World') -- выводим текст for c=0,0xFF do gpu.setPaletteColor(1, c + c*0x100 + c*0x10000) --проявляем цвет sleep(0.01) end sleep(5) --ждем чтоб прочитали for c=0xFF,0,-1 do gpu.setPaletteColor(1, c + c*0x100 + c*0x10000) --гасим цвет sleep(0.01) end gpu.setPaletteColor(1, с) -- восстанавливаем исходный цвет
  5. swg2you

    Digital rain

    Палитру юзай. Она позволяет менять цвет без перерисовки.
  6. swg2you

    Digital rain

    Понимание ЕГГОГ недоступно неофитам программирования )
  7. Вероятно ты смотрел документацию на Lua 5.1.
  8. http://www.lua.org/manual/5.2/manual.html#pdf-load
  9. load('код в виде строки', '', '', env)
  10. Ель говорю, кури. 2х2. ) А излишки древесины в древесный уголь, и в энергию.
  11. Кури ель, 2х2. Древесины и саженцев - море.
  12. unicode.byte - существовать не может в принципе, в utf-8 один символ может кодироваться последовательностью от 1 до 6 байт. но unicode.byte и не нужен, в принципе. local s='уникодэ' local h='' for i=1,#s do h=h..' '..string.format('%X', string.byte(s,i)) end print(s, #s) --строка и её длина в байтах print(h) -- побайтовое представление в нёх
  13. это чой-то дюже специфическая библиотека получилась. неясно зачем "бинарный вид" хранить в таблице. это же сколько килобайт на бит будет? неясно зачем вообще писать для него функцию, если луа и так умеет работать с битами. неясно зачем переводить делением/возведением в степень о_О, если есть сдвиг и маска неясно зачем CharToBit и WordToBit вместо одной str2bin --==-- если нужно в двоичный и назад то проще как-то так: function bin(n, l) local b='' for i=0,l or 31 do b=bit32.extract(n, i)..b end return b end function dec(b) local n=0 for i=1, #b do n=bit32.replace(n, string.sub(b,i,i), #b-i) end return n end print(bin(196)) print(dec('11000100'))
  14. Несколько замечаний. Насколько мне известно, то редстоун сигнал затухает с расстоянием. Т.е. 16 уровней сигнала, но с каждым блоком количество уровней будет сокращаться. Нужна процедура начального согласования, для определения длины линии и, соответственно, количества возможных уровней сигнала. В этом случае можно кодировать посылку не в двоичной а в N-ричной системе счисления, где N - количество уровней сигнала при данной длине линии. Реализация подобия UART нужна в любом случае, поскольку это N-ричное число нужно по какому-то протоколу передавать, да и процедура согласования опять же. Если правильно решить тактование, то при таком подходе, информационная емкость канала сильно возрастает достигнув теоретического максимума. Дополнительно можно мультиплексировать канал, тогда по одному проводу мы сможем передавать информацию одновременно туда и обратно. Но тут сложнее. РедСтоун участок - дискретен, и встречные волны скорее всего не пройдут. Нужно более детальное изучение поведения рс-цепи. Скорее всего, возможно только мультиплексирование по времени с падением пропускной способности в 4 раза. В этом случае, введение информационных фреймов внутри протокола, позволит нивелировать этот недостаток и использовать канал по максимуму. По поводу лагов. Неравномерность течения времени в игре наблюдается относительно реального времени. Думаю, что если поставить в майне два компьютера, и одновременно запустить, то не смотря на лаги, расхождения в таймерах данных компьютеров наблюдаться не будут. Т.е. внутри мира майнкрафт лагов нет. Но эта гипотеза требует проверки. --=-- Тема действительно интересная и объемная. Передача сигналов по одному (не учитывая землю) проводу - основа основ любой электроники.
  15. Реализовать UART - отличная задача. Осциллограф, показывающий сигналы на входах - вообще крутотень. А для тактования, думаю, можно взять computer.uptime(). Возможно удастся добиться скорости передачи 1 бит/2 тика. Нужно прикинуть суммарную погрешность.
  16. Программист, не забывай! Покодил? Смой за собой! Прими ложку знаний, и спать! З.Ы. А чтобы сетевую карту изобрести нужно вначале по редстоуну передать.
  17. Если абракадабру почитать на ночь, и уснуть, положив два кусочка медного провода под подушку, то наутро абракадабра станет менее кадабристой.
  18. Количество строк не показатель же ) Да и начинать с чего-то нужно. скобочки в () and () - говорят о сомнениях в приоритетах local r = require("robot") local w, l = 0, 0 while not r.detect() and r.detectDown() do r.forward() w = w + 1 end if not r.detectDown() then r.back() end r.turnRight() while not r.detect() and r.detectDown() do r.forward() l = l + 1 end if not r.detectDown() then r.back() l = l-1 end print(w, l, '\n', w*l) этакая простенькая рулетка выходит. Как её можно улучшить?
  19. Рисунок из символов это тру олдскул )
×
×
  • Создать...