OpenComputers/Туториал: Автоматическая ферма

Итак, вы установили OpenComputers. Что же теперь? Теперь пусть роботы работают за нас!


Выращивать пшеницу — скучное занятие. Однако пока вы заняты поиском алмазов для своего супер-компьютера, вам надо что-то есть. Построим роботизированную пшеничную ферму!

Ферма будет размерами 9×9 блоков. По центру разместим источник воды, для увлажнения почвы. Таким образом, полезная площадь составит 80 блоков. Оградим ферму по периметру от нежелательных гостей, чтобы не вытаптывали пшеницу и не сбивали программу роботу.


Tutorial Wheat Farm 0 (OpenComputers).png


Что потребуется?


Желательно также обладать компьютером, на котором мы будем писать программу.

Строительство

Первым делом — подготовим место для фермы. Удобно расположить ее на поверхности. Тогда робот сможет самостоятельно поддерживать заряд батарей.

Выберем подходящий участок земли размерами 9×9 блоков. Можно заглубить ферму в землю (как это сделал я, на скриншоте). Постройте ограждение. На одной из сторон участка, у правого угла, постройте возвышение в один блок над уровнем поля. Здесь будет располагаться робот (поле должно находиться перед ним и продолжаться влево) и сундук для урожая.

Выкопаем по центру поля ямку 1×1 блок и выльем туда воду.

Затем мотыгой взрыхлим землю на всем участке.


Tutorial Wheat Farm 1 (OpenComputers).png


Осветите участок и завершите постройку. Теперь пришло время засевать.


Измерение

Для более точной настройки программы необходимо установить, за какое время большая часть пшеницы на поле поспеет и будет готова к сбору. Для этого засеем поле в первый раз вручную. Засечем время и займемся чем-нибудь другим.

В моем случае, созревание пшеницы заняло около 50 минут реального времени. За это время в игре прошло несколько суток. Я взял интервал с небольшим запасом — час. Это 3600 секунд.


Программирование

Возьмем дискету и вставим в компьютер. Назовем ее Farm и создадим на дискете программу farmer.lua. (Подробно о работе с дисками и дискетами, переименовании и создании программ — см. Туториал: Работаем с дисками.)


Tutorial Wheat Farm 2 (OpenComputers).png


Вы можете перепечатать следующий код вручную и сохранить, либо скопировать его и вставить (⇧ 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 в его консоли.


Запуск фермы

Засеиваем поле (если оно еще не засеяно). Размещает робота на стартовой позиции (в правом углу одной из сторон поля).


Tutorial Wheat Farm 3 (OpenComputers).png


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


Включите робота. Смонтируйте дискету в удобное расположение, перейдите на нее и запустите нашу программу.

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


Tutorial Wheat Farm 4 (OpenComputers).png


Готово!


Итоги

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

За один сбор урожая ферма будет производить 55-60 снопов пшеницы и около 40 семян. Т.е. приблизительно 20 батонов хлеба в час.

Что дальше?

Ферму можно быстро расширить до любой площади. Для этого достаточно лишь заменить константы ширины и длины поля в коде робота, и подготовить землю.


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

Можно пойти дальше в автоматизации фермы, и добавить автоматический верстак (BuildCraft) для крафта хлеба из пшеницы, а затем трубу для доставки хлеба в дом.


Материалы

Туториалы:


Интерфейсы:

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