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

Программа "Сундук пчеловода v1.OC"

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

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

Цитата

Главная/Программирование/Разработчикам/Новые заказы

 

Программа "Сундук пчеловода v1.OC"

 

Описание: требуется программа - интерфейс для сундука с пчёлами.

 

Требования к ПО:
1. Выводить список пчёл в сундуке на экран. При этом должны выводиться вид пчелы (для гибридов - оба вида), срок жизни, скорость работы, допустимые температура и влажность, возможность пчелы работать ночью, под дождём и в пещере;
2. Без перезапуска принимать новых пчёл через воронку/PIM (опционально - сразу забирать из пасек);
3. Выдавать пчёл через раздатчик/PIM одним кликом по данным этой пчелы.

 

Награда: два стака бутербродов с мёдом.

 

Оборудование: тир2 компьютер, адаптер/транспозер, алмазный сундук IronChest либо сундук пчеловода из Forestry, опционально PIM.

 

Связь: ответ на этот пост в дискорде. Ник на сервере - ProgramCrafter.

 

Моя программа (https://github.com/ProgramCrafter/lua-utils/blob/a22e5e50ad46f130f6a7ec5959cd7282bb8a06df/beealyzer_v1oc.lua) служит компактным интерфейсом для сундука с пчёлами.

Её возможности:

1. Сканирование сундука и вывод списка проанализированных пчёл с их характеристиками на экран (при запуске происходит автоматический скан);

2. Выдача любой пчелы кликом левой кнопкой по её описанию;

3. Принудительное обновление списка (если в сундуке что-либо появилось) правой кнопкой мыши;

4. Выход кликом по заголовку.

 

Схема собирается таким образом: к компьютеру надо подключить транспозер, сверху на него поставить сундук с пчёлами, а с восточной стороны (правится в коде) выбрасыватель. Выбрасыватель требуется запитать от генератора импульсов (я использовал таймер из RedLogic из-за его компактности) - программа не подаёт самостоятельно импульс для выкидывания пчелы.

 

Чтобы программа работала, не забудьте поменять в начале программы ник доверенного пользователя на свой. Программа воспринимает нажатия только от доверенного пользователя - то есть, по умолчанию, только от меня.

 

Как выглядит интерфейс:

beealyzer.png

beealyzer-tier3-sm.png?raw=true

 

Изменено пользователем ProgramCrafter
Заменил ссылку на скриншот на неизменяемую

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, ProgramCrafter сказал:

Выбрасыватель требуется запитать от генератора импульсов (я использовал таймер из RedLogic из-за его компактности) - программа не подаёт самостоятельно импульс для выкидывания пчелы.

А в чём преимущество такого решения?

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


Ссылка на сообщение
Поделиться на других сайтах
13 часа назад, eu_tomat сказал:

А в чём преимущество такого решения?

Основное преимущество - не требуется использовать контроллер красного камня или красную плату в компьютере.

1) В тир2 компьютере и так мало места: один из слотов занимает видеокарта, во второй слот влазит максимум тир1 плата. Туда можно поставить редстоун-плату, но не нужно;

2) Упрощается монтаж схемы - не надо думать, как подвести провод ещё и к контроллеру красного камня, или как разместить выбрасыватель достаточно близко к компьютеру, чтобы он получал сигнал;

3) Такое решение на 2 тика быстрее - не надо включать и выключать сигнал. Следовательно, если надо обработать много пчёл, это может быть существенно. (Правда, сейчас большая часть времени тратится на обновление экрана. Сюда надо бы прикрутить буферизацию и использование по возможности gpu.copy.)

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


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

@ProgramCrafter В использовании таймера из RedLogic меня в первую очередь смущает его непрерывная работа независимо от состояния программы. Мало того, он при этом пытается инициировать работу выбрасывателя, что ещё сильнее увеличивает нагрузку на сервер. Компьютер же даёт команду красной плате лишь тогда, когда это необходимо, а в остальное время схема пассивна. Также схема на красной плате не зависит от наличия мода RedLogic, да и установка может получиться чуть компактнее.

 

Но твои аргументы я понял. В каких-то ситуациях они могут оказаться решающими.

 

У меня возник ещё один вопрос.

3 часа назад, ProgramCrafter сказал:

Такое решение на 2 тика быстрее - не надо включать и выключать сигнал. Следовательно, если надо обработать много пчёл, это может быть существенно.

А сколько пчёл ты выдаёшь за один раз?

 

 

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


Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, eu_tomat сказал:

А сколько пчёл ты выдаёшь за один раз?

По одной - но в отзывчивости программы разница в 2 тика (100 мс) может быть заметна.

 

15 минут назад, eu_tomat сказал:

увеличивает нагрузку на сервер

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

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


Ссылка на сообщение
Поделиться на других сайтах
55 минут назад, ProgramCrafter сказал:

Это хорошо было бы измерить.

Измерить можно. Но эти тесты всегда сравнительные и выглядят примерно так: такой-то механизм в таком-то режиме создаёт нагрузку, эквивалентную N других механизмов в каком-то режиме. И с оговорками: на таком-то сервере и на такой-то сборке. Я пока не смог прийти к какому-то единому стандарту замеров. По грубым оценкам быстро тикающий таймер нагружает сервер на десятые доли процента, а приставленный к нему пустой выбрасыватель — на сотые.

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


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

Как на счет красивых иконок пчелок?

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


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

Изменения в новой версии (fe3a3c8) относительно начальной (5e97a3e):

1. Добавлена поддержка тир3 экранов;

2. Пчёлы сортируются по "уровню" - сложности получения их вида в селекции;

3. Поддерживается несколько сундуков с пчёлами;

4. Настройки сторон для сундуков и выдачи пчёл перенесены в начало программы.

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


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, hohserg сказал:

Как на счет красивых иконок пчелок?

Очень мало места. Но если добавить их в шрифт OpenComputers, то можно, в принципе.

Кто-то сможет нарисовать красиво пчелу шириной в два знакоместа? А точнее, двух пчёл - трутня (без короны) и принцессу (с короной).

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


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

А сколько всего видов пчел в сборке?

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


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, hohserg сказал:

А сколько всего видов пчел в сборке?

Пчелиный сундук говорит, что 37. Но может случиться, что Вольфрам поставит Extra Bees, и будет 150 видов, или где-то около того.

Кстати, список пчёл есть здесь: https://minecraft.fandom.com/ru/wiki/Forestry/Пчеловодство

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


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

Допустим, юзаем экран т3 и на иконку пчелы тратим до 6x6 знако-мест(7x7 включая отступ между иконками)

По высоте влезает 7 пчел, по ширине 22 пчелы, 154 пчелы в сетке. Вроде все влезает даже на одной странице 

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


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

Проблема вот в чём: это будет выглядеть красиво, но пользоваться такой программой будет совершенно невозможно.

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

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


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

Жду версию для очков OpenPeripherals, там можно предметы рендерить 

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


Ссылка на сообщение
Поделиться на других сайтах
24 минуты назад, hohserg сказал:

Жду версию для очков OpenPeripherals, там можно предметы рендерить

Тогда стоит завести issue на гитхабе: https://github.com/ProgramCrafter/lua-utils/issues

Или на гитлабе - скоро и туда сделаю зеркало репозитория.

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


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

Под давлением общественности :) сделал версию, где отображаются только топовые пчёлы каждого вида.

Скачать можно здесь: https://github.com/ProgramCrafter/lua-utils/blob/main/beealyzer_v2oc.lua

Читаемость кода не максимальная, зато вся программа влазит в 256 строк - её можно скопировать и вставить в компьютер OC.

Особых изменений по интерфейсу нет, поэтому думаю, что в скриншотах смысла нет.

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, ProgramCrafter сказал:

сделал версию, где отображаются только топовые пчёлы каждого вида

А как ты определяешь топовую пчелу, если, например, одна пчела хороша плодовитостью, другая — скоростью работы, а третья летает в дождь?

Или, например, на этапе активной селекции желательно минимизировать срок жизни пчелы, но рабочим пчёлам желательно дать максимально возможную продолжительность жизни. Какая из них попадёт в топ?

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


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

На данный момент пчёлы сортируются по таким критериям:

1. Все принцессы выше трутней;

2. Менее топовый вид;

3. Продолжительность жизни;

4. Скорость работы.

 

Может быть, скорость работы - более важный критерий, чем продолжительность жизни, и их можно поменять местами. Но я не согласен, что срок жизни пчелы надо минимизировать при селекции: для этого надо куда-то спешить, а топовые пчёлы появляются с долгим сроком жизни по умолчанию. Их придётся скрещивать с менее топовыми, чтобы понизить срок жизни - а потом ещё раз, чтобы повысить. К тому же, если пчела живёт дольше, медленнее заполняются сундуки пчеловода :)

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


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, ProgramCrafter сказал:

Но я не согласен, что срок жизни пчелы надо минимизировать при селекции: для этого надо куда-то спешить, а топовые пчёлы появляются с долгим сроком жизни по умолчанию.

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

 

3 часа назад, ProgramCrafter сказал:

К тому же, если пчела живёт дольше, медленнее заполняются сундуки пчеловода

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

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...