OpenComputers/Робот-дровосек

Материал из Minecraft Wiki
Перейти к: навигация, поиск

Эта простая программа для робота с топором предназначена для сбора древесины.

Робот дежурит возле дерева, срубая его, когда оно вырастает и высаживая новое.

Исходный код[править | править код]

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-ого слота, в котором он хранит саженцы.


Будет неплохо установить на робота апгрейд-солнечную панель. Тогда робот сможет самостоятельно пополнять свой запас энергии — ведь он круглосуточно находится под открытым небом.

Робот некорректно обрабатывает большие и разветвлённые деревья.