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


Фотография

Осмысленный индикатор робота

opencomputers роботы декоративный

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 Оффлайн   man_cubus

man_cubus
  • Пользователи
  • Сообщений: 20
  • Уровень сигнала: 50,96%
  • В игре: 415 час. 13 мин.
  • ГородKiev

Награды

        

Отправлено 03 Июль 2018 - 19:20

Пришло время для моей собственной первой темы.
Когда-то я наткнулся на возможность менять цвет индикатора у роботов и чуть погодя, реализовал отображение заряда робота с помощью изменения этого самого индикатора.
 
Сейчас всего 4 градации Синий для заряженного больше чем на 75%, сине-зеленый для заряженного больше чем наполовину, оранжевый для заряда больше 25% и тускло-красный для заряда меньше 25%
 
Распространяется через hpm, он же hel package manager любезно предоставленный Totoro доступный вот в этой теме. Для установки нужно установить hpm с помощью
pastebin run vf6upeAN
и затем
hpm install blues
для установки файла blues.lua в /etc/rc.d/blues.lua, после чего нужно выполнить регистрацию нового rc модуля командой
rc blues enable
И перезагрузить робота.
 
 
Вот так примерно выглядит робот с индикацией, которая обновляется раз в пять секунд и позволяет с первого взгляда определить робота, у которого низкий заряд.
Дополнительные ссылки:
Пакет на hel.fomalhaut.me
Код на gitlab.com
 
jwAzQtC.png

Сообщение отредактировал eu_tomat: 08 Июль 2018 - 11:21
коррекция ссылки на код


#2 Оффлайн   Zed

Zed
  • Пользователи
  • Сообщений: 121
  • Уровень сигнала: 21,88%
  • В игре: 178 час. 15 мин.

Награды

                 

Отправлено 03 Июль 2018 - 20:18

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

Мой вердикт, лишняя затрата ресурсов робота.



#3 Оффлайн   man_cubus

man_cubus
  • Автор темы
  • Пользователи
  • Сообщений: 20
  • Уровень сигнала: 50,96%
  • В игре: 415 час. 13 мин.
  • ГородKiev

Награды

        

Отправлено 03 Июль 2018 - 20:33

Предлагаю зайти в эвил и посмотреть что делает робот со скрина на варпе cubus

#4 Оффлайн   Zed

Zed
  • Пользователи
  • Сообщений: 121
  • Уровень сигнала: 21,88%
  • В игре: 178 час. 15 мин.

Награды

                 

Отправлено 03 Июль 2018 - 22:06

Предлагаю зайти в эвил и посмотреть что делает робот со скрина на варпе cubus

Увидел, статическое действие, стоит на месте и бездомным ведром забирает воду.



#5 Оффлайн   man_cubus

man_cubus
  • Автор темы
  • Пользователи
  • Сообщений: 20
  • Уровень сигнала: 50,96%
  • В игре: 415 час. 13 мин.
  • ГородKiev

Награды

        

Отправлено 03 Июль 2018 - 22:36

Однако он получает энергию от встроенной солнечной панели.

Если Алекс вернёт еще и дождь в Улей, то индикатор может пригодиться. Возможно, станет актуальным зарядить робота опытом и таки еще понизить энергопотребление.

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


Сообщение отредактировал man_cubus: 03 Июль 2018 - 22:39


#6 Оффлайн   Zed

Zed
  • Пользователи
  • Сообщений: 121
  • Уровень сигнала: 21,88%
  • В игре: 178 час. 15 мин.

Награды

                 

Отправлено 03 Июль 2018 - 23:41

Однако он получает энергию от встроенной солнечной панели.

Если Алекс вернёт еще и дождь в Улей, то индикатор может пригодиться. Возможно, станет актуальным зарядить робота опытом и таки еще понизить энергопотребление.

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

Ну в таких ситуациях думаю ты прав



#7 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 911
  • Уровень сигнала: 6,13%
  • В игре: 49 час. 56 мин.

Награды

                          

Отправлено 04 Июль 2018 - 09:28

Сообщать игроку состояние робота цветом полосы в ряде случаев бывает очень удобным. Как правило, это стационарные роботы с неполной автоматизацией процесса: либо программа ещё недописана, либо недостроены части всей системы, либо полная автоматизация вообще не подразумевается, например, в зонах, не защищённых приватом. При таком способе передачи информации игроку достаточно одного взгляда, чтобы понять, требует ли робот внимания по любой из причин: низкий уровень заряда, недостаток топлива или материалов, переполнение инвентаря, износ или разряд инструмента.

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

Сообщение отредактировал eu_tomat: 08 Июль 2018 - 11:19
чистка устаревшего комментария


#8 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 911
  • Уровень сигнала: 6,13%
  • В игре: 49 час. 56 мин.

Награды

                          

Отправлено 08 Июль 2018 - 15:00

Первый (в порядке появления, а не по важности) совет: освоить шестнадцатеричную запись цветов. Записиь вида
robot.setLightColor(0xFF8080) сегодня понятна не только программистам, но и многим дизайнерам. Даже они, далёкие от тонкостей систем счисления, оценили удобство такой записи. В результате промежуточная функция colorRGB() становится ненужной, а запись выглядит компактнее. Впрочем, для кого-то запись из трёх десятичных чисел более понятна, и потому имеет право на существование.

Следующий участок кода можно и записать короче, и сделать более понятным, и даже поднять его быстродействие:
	local powerSteps = #cl
	local e = tonumber(pc.maxEnergy())
	local pStep = math.floor((e / powerSteps))

	local function currentPowerStep()
		e = pc.energy()
		local result = powerSteps
		local process = true
		for i = 1, powerSteps-1 do
			if (e < (pStep*i)) and process then
				result = i
				break
			end
		end
		return result
	end
Здесь используется цикл и проверка условия внутри него. В зависимости от текущего состояния робота выполняется соответствующее количество итераций. Но это вычисление можно всегда выполнить за одну итерацию.
local idx = math.ceil(computer.energy() / computer.maxEnergy() * #colors)
robot.setLightColor(colors[ idx>0 and idx or 1 ])
Такой код записывается короче, выглядит проще, а работает быстрее. И памяти меньше требует.

#9 Оффлайн   man_cubus

man_cubus
  • Автор темы
  • Пользователи
  • Сообщений: 20
  • Уровень сигнала: 50,96%
  • В игре: 415 час. 13 мин.
  • ГородKiev

Награды

        

Отправлено 09 Июль 2018 - 11:42

 

Такой код записывается короче, выглядит проще, а работает быстрее. И памяти меньше требует.

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


Сообщение отредактировал man_cubus: 09 Июль 2018 - 11:44






Темы с аналогичным тегами opencomputers, роботы, декоративный

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных