OpenComputers/Робот-дровосек
Эта простая программа для робота с топором предназначена для сбора древесины.
Робот дежурит возле дерева, срубая его, когда оно вырастает и высаживая новое.
Исходный код
local robot = require("robot") local comp = require("computer") function jack() while robot.detect() do if not robot.up() then robot.swingUp() robot.up() end end while not robot.detectDown() do robot.down() robot.swing() end robot.place() robot.up() end function unload() robot.turnAround() robot.down() for c = 2, 16 do robot.select(c) if robot.count() > 0 then robot.drop() end end robot.select(1) robot.up() robot.turnAround() end while true do robot.up() if robot.detect() then jack() if robot.count(2) == 64 then unload() end end robot.down() if comp.energy() < 10 then print("Error! Low energy level.") break end os.sleep(30) end
Разбор
Программа состоит из двух функций, которые вызываются из главного цикла.
Функция jack()
срубает дерево и высаживает новое на его место.
Функция unload()
производит выгрузку инвентаря (кроме 1-ого слота) в стоящий позади робота сундук.
Главный цикл прерывается при низком уровне энергии (<100). В этом месте было бы уместно вставить сообщение главному серверу. (Это потребует установки на робота беспроводной сетевой платы.) Таким образом игрок сможет удаленно контролировать состояние своих роботов.
Эксплуатация
Поставьте заряженного робота на землю в удобном месте. Посадите перед ним саженец дерева, а позади поставьте сундук и запустите программу. Вы можете также положить несколько саженцев в 1-ый (левый-верхний) слот робота.
Сразу после запуска, и далее раз в 30 секунд, робот будет проверять не выросло ли дерево. Если оно вырастет, робот срубит его начиная с вершины (если стоит модификация TreeCapitator или аналогичная, то рубка начиная снизу будет неэффективна из-за большого разброса блоков дерева). После того, как робот накопит стек в 64 блока дерева во втором слоте, он выгрузит содержимое инвентаря в сундук, за исключением 1-ого слота, в котором он хранит саженцы.
Будет неплохо установить на робота апгрейд-солнечную панель. Тогда робот сможет самостоятельно пополнять свой запас энергии — ведь он круглосуточно находится под открытым небом.
Робот некорректно обрабатывает большие и разветвлённые деревья.