Итак, вы установили OpenComputers. Что же теперь? Теперь пусть роботы работают за нас!
Выращивать пшеницу — скучное занятие. Однако пока вы заняты поиском алмазов для своего супер-компьютера, вам надо что-то есть. Построим роботизированную пшеничную ферму!
Ферма будет размерами 9×9 блоков. По центру разместим источник воды, для увлажнения почвы. Таким образом, полезная площадь составит 80 блоков. Оградим ферму по периметру от нежелательных гостей, чтобы не вытаптывали пшеницу и не сбивали программу роботу.
Желательно также обладать компьютером, на котором мы будем писать программу.
Первым делом — подготовим место для фермы. Удобно расположить ее на поверхности. Тогда робот сможет самостоятельно поддерживать заряд батарей.
Выберем подходящий участок земли размерами 9×9 блоков. Можно заглубить ферму в землю (как это сделал я, на скриншоте). Постройте ограждение. На одной из сторон участка, у правого угла, постройте возвышение в один блок над уровнем поля. Здесь будет располагаться робот (поле должно находиться перед ним и продолжаться влево) и сундук для урожая.
Выкопаем по центру поля ямку 1×1 блок и выльем туда воду.
Затем мотыгой взрыхлим землю на всем участке.
Осветите участок и завершите постройку. Теперь пришло время засевать.
Для более точной настройки программы необходимо установить, за какое время большая часть пшеницы на поле поспеет и будет готова к сбору. Для этого засеем поле в первый раз вручную. Засечем время и займемся чем-нибудь другим.
В моем случае, созревание пшеницы заняло около 50 минут реального времени. За это время в игре прошло несколько суток. Я взял интервал с небольшим запасом — час. Это 3600 секунд.
Возьмем дискету и вставим в компьютер. Назовем ее Farm
и создадим на дискете программу farmer.lua
. (Подробно о работе с дисками и дискетами, переименовании и создании программ — см. Туториал: Работаем с дисками.)
Вы можете перепечатать следующий код вручную и сохранить, либо скопировать его и вставить (⇧ Shift+Insert в игровом редакторе).
И наконец, вы можете открыть (свернув игру на время, и поместив дискету в инвентарь) папку \.minecraft\saves\<Название вашего сохранения>\opencomputers\<Адрес дискеты>\
. Там находится только что созданный файл farmer.lua
. Вы можете открыть его любым редактором и вставить текст программы.
Код:
local robot = require("robot") local comp = require("computer") local size = 9 function harvest() -- fly to start robot.forward() for y=1, size do -- harvest one line robot.swingDown() robot.placeDown() for x=1, (size-1) do robot.forward() robot.swingDown() robot.placeDown() end -- turn if y%2 == 1 then robot.turnLeft() robot.forward() robot.turnLeft() else robot.turnRight() robot.forward() robot.turnRight() end end -- return for y=1, (size-1) do robot.forward() end robot.turnLeft() for y=1, (size-1) do robot.forward() end robot.turnRight() robot.forward() robot.turnAround() end function unload() robot.turnAround() for c = 2, 16 do robot.select(c) if robot.count() > 0 then robot.drop() else robot.select(1) break end end robot.turnAround() end while true do -- one hour sleeping for i=1, 10 do os.sleep(360) print((10*i)..'%') end -- harvest() if robot.count(2) == 64 then unload() end end
Программа состоит из двух функций и главного цикла.
Функция harvest()
обеспечивает сбор урожая и высадку семян. Она выводит робота на поле, а затем двигает его "челночными" движениями, ряд за рядом. Над каждым блоком робот делает взмах мотыгой, собирая урожай, и высаживает взамен одно семечко из активного первого слота.
Функция unload()
выгружает содержимое инвентаря робота в сундук, который должен находиться позади начальной позиции робота. Первый слот функция пропускает — там робот хранит запас семян для посадки. При сборе урожая этот слот автоматически заполняется семенами снова.
Первая часть главного цикла программы — ожидание. Для наглядности (чтобы робот не казался "зависшим"), робот каждый шесть минут выводит в свою консоль проценты созревания урожая.
При достижении 100%, вторая часть главного цикла вызывает функцию harvest()
. Затем проверяет, не полон ли второй слот и выгружает инвентарь в сундук, если необходимо.
Программа работает в бесконечном цикле. Её можно прервать, если выключить робота, или нажать Ctrl+Alt+C в его консоли.
Засеиваем поле (если оно еще не засеяно). Размещает робота на стартовой позиции (в правом углу одной из сторон поля).
Размещаем мотыгу, дискету и солнечную панель в соответствующих слотах. Если устанавливать робота при свете солнца, вам не придется даже заряжать его. После установки солнечной панели, аккумулятор робота автоматически начнёт заполняться. Положите стек семян в активный первый слот (он отмечен бегущим зеленым контуром).
Включите робота. Смонтируйте дискету в удобное расположение, перейдите на нее и запустите нашу программу.
Робот должен будет повиснуть в воздухе, и начнет ожидание. В консоль будут периодически выводиться проценты готовности. Через час, робот совершит облет поля, соберет урожай и засеет новый.
Готово!
Ферма полностью автоматизирована. Вам необходимо будет только менять мотыгу роботу, когда она износится (это будет происходить не очень часто).
За один сбор урожая ферма будет производить 55-60 снопов пшеницы и около 40 семян. Т.е. приблизительно 20 батонов хлеба в час.
Ферму можно быстро расширить до любой площади. Для этого достаточно лишь заменить константы ширины и длины поля в коде робота, и подготовить землю.
Вы можете усложнить код робота. Добавьте настройку первого ожидания (если робот устанавливается на уже созревающее или пустое поле). Сделайте автоматическую замену сломанной мотыги. И т.д.
Можно пойти дальше в автоматизации фермы, и добавить автоматический верстак (BuildCraft) для крафта хлеба из пшеницы, а затем трубу для доставки хлеба в дом.
Туториалы:
Интерфейсы: