OpenComputers/Бесконечная комната
## Функции

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



## Требования

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

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

- В последний, 16 слот, топливо (любое, которое горит);
- В предпоследний, 15 слот, несколько сундуков (чем больше, тем лучше).

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



## Что учтено

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

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



## Что не учтено

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



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

--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