OpenComputers/Бесконечная комната

Функции

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


Требования

Робот должен иметь:

Вам необходимо положить роботу:

Желательно иметь кирку попрочнее (алмазную, зачарованную на прочность).


Что учтено

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

В программе учтён гравий: робот будет ломать блок перед собой, пока не станет свободно.


Что не учтено

Не учитывается появление монстров. Внимание! Не заставляете робота копать в лаве, ибо это чревато потерей всех добытых ресурсов (робот не сможет поставить сундук в лаве, и выкинет все вещи в неё). Также, не происходит автоматическое складывание угля в генератор. Не учитывается земля (да, он будет рыть её киркой).


Текст программы

--var local r = require("robot") local component = require("component") local g = component.generator local leng = 3 local i = 0 local j = 0 function eat() local selectedSlot = r.select() --begin print("Eating fuel...") r.select(16) g.insert(8) r.select(selectedSlot) end function fillChest() local selectedSlot = r.select() local k = 0 --begin r.select(15) r.placeDown() print("Clearing slots...") for k = 1, 14 do r.select(k) r.dropDown() end r.select(selectedSlot) end function checkInv() --begin if r.count(14) > 0 then print("Slot 14 is partially filled!") fillChest() end end function forward() checkInv() repeat r.swing() until not r.detect() r.forward() r.swingUp() r.swingDown() end --begin forward() r.turnRight() forward() r.turnRight() while true do print("Current tunnel length: "..leng) if g.count() < 1 then eat() end for j = 1, 2 do for i = 1, tonumber(leng) - 1 do forward() end r.turnRight() end leng = leng + 1 end


В данной статье используются материалы из статьи «OpenComputers/Бесконечная комната» с вики-сайта Minecraft Wiki, расположенного на Фэндоме, и они распространяются согласно лицензии Creative Commons Attribution-NonCommercial-ShareAlike 3.0. Авторы статьи.