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

Проблема с gpu.set

Вопрос

Сделал небольшую хрень для визуализации питания систем дома
Но есть проблема с 3 последними стрелками 

Именно почему-то последние 3 стрелки тупят, со всем остальным норм
Мне кажется это потому, что возможно я неправильно использую gpu.setForeground
Проблема находится на строчках 157-185
При активации стрелки на строчке 157, активируются все стрелки которые находятся ниже, то-есть 169,178 строчки
С остальными стрелками все нормально, они загораются как надо
 

Буду очень благодарен за помощь

 

Код говнокод проги

 

 

local component = require("component")
local term = require("term")
local gpu = component.gpu 
local rs = component.redstone

namecolor = 0xffffff -- цвет названия программы
fontcolor = 0x77f3f9 -- цвет названия систем
green = 0x04ff00 -- зеленый цвет
red = 0xff0000 -- красный цвет
gray = 0x636363 -- серый цвет
white = 0xffffff -- белый цвет
timing = 0.5 -- задержка обновления информации (в секундах)

gpu.setResolution(60,20)
gpu.setBackground(0x000000)
rs.setBundledOutput(3,4,255) -- ПОСЛЕ НАСТРОЙКИ УБРАТЬ ЭТОТ МУСОР
rs.setBundledOutput(3,3,255) -- И ЭТО ДЕРЬМО ТОЖЕ НАХЕР
term.clear()
-- Выводим название проги на экран
gpu.setForeground(namecolor)
gpu.set(20,1,'ENERGY SUPPLY MONITOR')

-- Выводим названия систем
gpu.setForeground(fontcolor)
gpu.set(19,6,'HV Solar Panel Supply')
gpu.set(2,11,'Primary---MFSU---System')
gpu.set(37,11,'Secondary-MFSU-System')
gpu.set(37,15,'Computers / AE Supply')
gpu.set(1,15,'Tools')
gpu.set(8,15,'User1')
gpu.set(16,15,'User2')
gpu.set(24,15,'AE Tools')
-- рисуем одну одинокую полосочку
gpu.setForeground(gray)
gpu.set(27,11,'─')
gpu.set(28,11,'─')
gpu.set(29,11,'─')
gpu.set(30,11,'─')
gpu.set(31,11,'─')
gpu.set(32,11,'─')
gpu.set(33,11,'─')
gpu.set(34,11,'─')

while true do -- Цикл рисования хлама
os.sleep(timing)

-- Отображение отключенных систем
if rs.getBundledInput(3,13) > 0 then -- Питание комнаты приборов отключено
gpu.setForeground(white)
gpu.set(1,20,'Tools OFF')
else
gpu.setForeground(white)
gpu.set(1,20,'         ')
end

if rs.getBundledInput(3,14) > 0 then -- Питание комнаты User1 отключено
gpu.setForeground(white)
gpu.set(15,20,'User1 OFF')
else
gpu.setForeground(white)
gpu.set(15,20,'         ')
end

if rs.getBundledInput(3,15) > 0 then -- Питание комнаты User1 отключено
gpu.setForeground(white)
gpu.set(29,20,'User2 OFF')
else
gpu.setForeground(white)
gpu.set(29,20,'         ')
end

if rs.getBundledInput(3,12) > 0 then -- Питание приборов МЭ системы отключено
gpu.setForeground(white)
gpu.set(43,20,'AE Tools OFF')
else
gpu.setForeground(white)
gpu.set(43,20,'            ')
end

-- Отображение стрелок
if rs.getBundledInput(3,0) > 0 then -- стрелка подачи питания на компы и мэ
gpu.setForeground(green)
gpu.set(47,12,'│')
gpu.set(47,13,'│')
gpu.set(47,14,'▼')
else
gpu.setForeground(red)
gpu.set(47,12,'│')
gpu.set(47,13,'│')
gpu.set(47,14,'▼')
end

if rs.getBundledInput(3,2) > 0 then -- стрелка зарядки вторичной МФСУ системы от солнечных панелей
gpu.setForeground(green)
gpu.set(39,7,'│')
gpu.set(39,8,'│')
gpu.set(39,9,'│')
gpu.set(39,10,'▼')
else
gpu.setForeground(red)
gpu.set(39,7,'│')
gpu.set(39,8,'│')
gpu.set(39,9,'│')
gpu.set(39,10,'▼')
end

if rs.getBundledInput(3,6) > 0 then -- стрелка подзарядки основной МФСУ системы от солнечных панелей
gpu.setForeground(green)
gpu.set(19,7,'│')
gpu.set(19,8,'│')
gpu.set(19,9,'│')
gpu.set(19,10,'▼')
else
gpu.setForeground(red)
gpu.set(19,7,'│')
gpu.set(19,8,'│')
gpu.set(19,9,'│')
gpu.set(19,10,'▼')
end

if rs.getBundledInput(3,7) > 0 then -- стрелка питания комнаты с приборами
gpu.setForeground(green)
gpu.set(3,12,'│')
gpu.set(3,13,'│')
gpu.set(3,14,'▼')
else
gpu.setForeground(red)
gpu.set(3,12,'│')
gpu.set(3,13,'│')
gpu.set(3,14,'▼')
end

if rs.getBundledInput(3,8) > 0 then -- стрелка питания комнаты user 1
gpu.setForeground(green)
gpu.set(10,12,'│')
gpu.set(10,13,'│')
gpu.set(10,14,'▼')
else
gpu.setForeground(red)
gpu.set(10,12,'│')
gpu.set(10,13,'│')
gpu.set(10,14,'▼')
end

if rs.getBundledInput(3,9) > 0 then -- стрелка питания комнаты user 2
gpu.setForeground(green)
gpu.set(18,12,'│')
gpu.set(18,13,'│')
gpu.set(18,14,'▼')
else
gpu.setForeground(red)
gpu.set(18,12,'│')
gpu.set(18,13,'│')
gpu.set(18,14,'▼')
end

if rs.getBundledInput(3,10) > 0 then -- стрелка питания приборов МЭ системы
gpu.setForeground(green)
gpu.set(24,12,'│')
gpu.set(24,13,'│')
gpu.set(24,14,'▼')
else
gpu.setForeground(red)
gpu.set(24,12,'│')
gpu.set(24,13,'│')
gpu.set(24,14,'▼')
end

if rs.getBundledInput(3,1) > 0 then -- стрелка подзарядки первичной системы от вторичной
gpu.setForeground(green)
gpu.set(26,11,'─')
gpu.set(25,11,'◄')
else
gpu.set(26,11,'─')
gpu.set(25,11,'◄')
end

if rs.getBundledInput(3,5) > 0 then -- стрелка подзарядки вторичной системы от первичной
gpu.setForeground(green)
gpu.set(35,11,'─')
gpu.set(36,11,'►')
else
gpu.set(35,11,'─')
gpu.set(36,11,'►')
end

end
 

 

 

 

Работает нормально, загорается одна стрелочка, как и надо

 

c77814569d383781851dcac74b303a0e.png

 

 

А вот тут косяк, должна гореть одна нижняя стрелочка, горят все три сразу

 

a20b874befc6ac4b9ada38a40b794999.png

 

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

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


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

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

  • 0

после else  в строчках 173 и 182 добавь gpu.setForeground(red)

А вообще, зачем столько лишних символов? Код можно в трое сократить

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

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


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

a еще лучше назначить каждой иконке координаты и значение в таблице, чтобы не путаться

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


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

после else  в строчках 173 и 182 добавь gpu.setForeground(red)

А вообще, зачем столько лишних символов? Код можно в трое сократить

Даа, точно, после else забыл про gpu.setForeground(red)

Жесть, целый час искал проблему, не мог понять в чем косяк

Да, код попробую сократить

Огромное спасибо

 

a еще лучше назначить каждой иконке координаты и значение в таблице, чтобы не путаться

Да, спасибо, поправлю код

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


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

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

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

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

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

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

Войти

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

Войти сейчас

×