Перейти к публикации
Форум - ComputerCraft
Doob

Digital rain

Рекомендованные сообщения

Немного кривое и медлительное поделие в стиле дождя на мониторах в The Matrix.
Ускорить никак не получается из-за отжирания времени циклами и ограничением производительности мониторов, можно воспользоваться библиотекой thread, но она иногда приводит к FATAL EГГОГ, который можно исправить только уничтожив жесткий диск.
 
pastebin get Lsb5YMjg rain

 

1ciSGhs.png

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

FATAL EГГОГ

Фатальный Еггог? Кто такой еггог? Хм... [й' э г г о г]

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Думаю станет лучше, если за каждым символом будет тянуться шлейф из менее ярких, постепенно гаснущих символов.

1408585204396id342921.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Фатальный Еггог? Кто такой еггог? Хм... [й' э г г о г]

Понимание ЕГГОГ недоступно неофитам программирования )

  • Like 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Думаю станет лучше, если за каждым символом будет тянуться шлейф из менее ярких, постепенно гаснущих символов.

 

 

Да, я так и делал, но это замедляет процесс отрисовки в десятки раз, поэтому сделал чтобы только новые символы были 00FF00, остальные 008800, только из-за странных пустых символов теперь иногда замирают символы с лаймовым цветом.

Хорошо было на CC, там нету вымышленных ограничений - можно каждые пол-секунды перерисовывать весь экран.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, я так и делал, но это замедляет процесс отрисовки в десятки раз, поэтому сделал чтобы только новые символы были 00FF00, остальные 008800, только из-за странных пустых символов теперь иногда замирают символы с лаймовым цветом.

Хорошо было на CC, там нету вымышленных ограничений - можно каждые пол-секунды перерисовывать весь экран.

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

gifki-58535609_orig_.gif

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

gifki-58535609_orig_.gif

Ух какой красивый муравьишка!

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

gifki-58535609_orig_.gif

 

Эм... А как оно ускорит работу? Все-равно беда в циклах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

Что это за палитра и как ей пользоваться?  На вики вскользь про какие то индексы сказано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

все что выводится таким методом:

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, с) -- восстанавливаем исходный цвет

Изменено пользователем swg2you
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хм.. Надо попробовать генерировать рандомный текст на весь экран, а потом палитрой рисовать линии, но вряд-ли это что-то изменит, кроме смазливости изображения.

 

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

Изменено пользователем Doob

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я когда-то такую фиговину сделал на сервер наш старый на спавн на КК. Грузит оно сильно, эти принтилки в бесконечных циклах. И там не перепринчивался экран весь. Там только рандомился 'y' первой  строки и падал символ, меняясь на ходу, а затухание осуществлялось рандомными чистильщиками(то ли пустым символом, то ли чем, уже не помню)

 

Такие проги надо прятать, так как почти каждый бибигон запустит их у себя  в домике для красоты, а выхлопа полезного с них нет. Но так то да, Матрица повсюду, спору нет, смотрится оно культово.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Фатальный Еггог? Кто такой еггог? Хм... [й' э г г о г]

Не было у тебя МК-52 :giggle:

Изменено пользователем davial

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Небыло у тебя МК-52 :giggle:

К большому сожалению... Изменено пользователем LeshaInc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Понимание ЕГГОГ недоступно неофитам программирования )

ММ-52(61) - рулит :D

Посмотрите Еггогология на Википедии - я не шучу!

У нас тоже тут ЕГГОГология творится, только с Луа.

Изменено пользователем davial
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас тоже тут ЕГГОГолигия творится, только с Луа.

Скорее спам. :giggle: Изменено пользователем LeshaInc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ММ-52(61) - рулит :D

У нас тоже тут ЕГГОГология творится, только с Луа.

Угу. Я на 61-м много кодил ) 

 

Как еггоголог могу сказать, что описание мониторов и гпу, в официальной вики, не соответствует действительности.

  • Монитор тир2 умеет 16 переопределяемых цветов
  • Монитор тир3 умеет 16 переопределяемых и 240 фиксированных (всего 256).
  • 16 переопределяемых цветов в тир3 занимают место градации серого, из стандартной палитры 6*8*5+16, поэтому их изменение портит оттенки серого.
  • Цвет в виде 0xRRGGBB - фикция, при записи, цвет будет приведен к ближайшему из палитры монитора (16 для тир2 и 256 для тир3)

Поэтому, в любом случае, для хранения цвета знакоместа (фон/символ) в тир2 достаточно 1 байт, тир3 -2 байта.

 

Еще одна особенность. Запись "широкого" юникод-символа в знакоместо, затирает следующее знакоместо пробелом.

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×