Компьютерная переменная в случае если
У меня есть небольшая проблема, я новичок в Lua и ComputerCraft. так что моя проблема, я думаю, в том, что я слишком глуп, чтобы кодировать изменение переменной, которое содержится в операторе if, я опубликую свой код в надежде, что вы поможете мне с этой проблемой, спасибо
mon = peripheral.wrap("top")
modem = peripheral.wrap("right")
mon.clear()
mon.setCursorPos(1,2)
mon.blit("Pulverizer","0000000000","dddddddddd")
redstone.setOutput("right", true)
Pulverizer = true
mon.setCursorPos(1,4)
mon.write("Furnice","0000000","ddddddd")
redstone.setOutput("left", true)
local Furnice = true
mon.setCursorPos(1,6)
mon.write("Injection Chamber","00000000000000000","ddddddddddddddddd")
local Injection_Chamber = true
redstone.setOutput("top",true)
mon.setCursorPos(1,8)
mon.write("Metalurgig InFuser","000000000000000000","dddddddddddddddddd")
local Metalurgig_InFuser = true
redstone.setOutput("bottom", true)
while true do
event,side,x,y = os.pullEvent("monitor_touch")
if x > 1 and x < 11 and y == 2 and Pulverizer == true then
mon.setCursorPos(1,2)
mon.clearLine()
mon.blit("Pulverizer","0000000000","eeeeeeeeee")
redstone.setOutput("right", false)
Pulverizer = false
elseif x > 1 and x < 11 and y == 2 and Pulverizer == false then
mon.setCoursorPos(1,2)
mon.clearLine()
mon.blit("Pulverizer","0000000000","dddddddddd")
redstone.setOutput("right", true)
Pulverizer = true
end
end
ссылка на Pastebin: ссылка на код
так что проблема в этой части кода
if x > 1 and x < 11 and y == 2 and Pulverizer == true then
mon.setCursorPos(1,2)
mon.clearLine()
mon.blit("Pulverizer","0000000000","eeeeeeeeee")
redstone.setOutput("right", false)
Pulverizer = false
переменная Pulverizer не хочет меняться с true на false, поэтому этот код не может быть активирован прямо сейчас
elseif x > 1 and x < 11 and y == 2 and Pulverizer == false then
mon.setCoursorPos(1,2)
mon.clearLine()
mon.blit("Pulverizer","0000000000","dddddddddd")
redstone.setOutput("right", true)
Pulverizer = true
и я не знаю, почему здесь также есть ссылка на видео из игрового материала, так что, как вы можете видеть на видео, он становится красным, но больше не становится зеленым
1 ответ
Не уверен, что это решит вашу проблему, но стоит попробовать отладить это. Просто для хорошей практики, я бы порекомендовал, когда вы определяете Pulverizer в строке 7, установите его на локальный, используя local Pulverizer = true
, Вероятно, ничего не изменится, но это хорошая практика. По моему опыту также полезно избегать использования переменных с заглавными буквами.
Во-вторых, попробуйте переработать ваш if
Блок на 2 блока, как это:
if x > 1 and x < 11 and y == 2 then
--Put some output message here or something so that you can see that it's entered this block of code and detected the cursor properly
mon.setCursorPos(1,2)
mon.clearLine()
if Pulverizer == true then
--Put another output message here so that you can see that Pulverizer is being evaluated as true
mon.blit("Pulverizer","0000000000","eeeeeeeeee")
elseif Pulverizer == false then
--Put one last output message here so that if Pulverizer is being evaluated as false you'll know
mon.blit("Pulverizer","0000000000","dddddddddd")
end
Pulverizer = not Pulverizer
redstone.setOutput("right", Pulverizer)
end
Если вы вставите отладочное сообщение в места, где я разместил комментарии (заштрихованные линии), это должно помочь вам сузить проблему, потому что вы можете видеть, какие блоки вводятся, а какие нет. Еще одна хорошая идея - вставить код сразу после того, как вы Pulverizer = true
или же Pulverizer = false
это покажет ценность Pulverizer
,
Я не очень знаком со специфическим синтаксисом Computercraft, поэтому не уверен, что вы можете отобразить сообщение в чате или просто на мониторе для целей отладки, но вы поняли идею. Всякий раз, когда у вас есть проблема, которую вы не можете сузить, попробуйте поместить отладочные сообщения в свой код, чтобы вы могли точно видеть, что происходит, и работать оттуда. Если вы найдете больше информации, не стесняйтесь оставлять комментарии, и я проверю и посмотрю, смогу ли я помочь еще.
Надеюсь, вы найдете это полезным, хороших выходных!