Перейти к содержимому
Xottabich

Моя первая ферма на роботе

Рекомендуемые сообщения

Привет, это моя первая программа для робота. Автоферма пшеницы.

local args = {...}
local io = require("io")
local robot = require("robot")
local comp = require("computer")
local filesystem = require("filesystem")
local r_forward = robot.forward
local arg1 = args[1]
local arg2 = args[2]
function robot.forward()
  repeat os.sleep(0) until r_forward()
  return true
end

if (arg1 == "size") then
  if (arg2 == nil) then return print("Не указан размер") end
  local farmsize = io.open("/home/farm.cfg", "w")
  farmsize:write(arg2)
  farmsize:flush()
  farmsize:close()
  return print("Позиция установлена")
end

if (filesystem.exists("/home/farm.cfg") == false) then
  return print("Файл конфигурации не создан! пожалуйста используйте аргумент size *Размер поля*")
end

local farmsize = io.open("/home/farm.cfg")

local size = farmsize:read()

farmsize:close()

function farm()
  robot.forward()
  for y = 1, size do
    -- собрать 1 линию
    robot.swingDown()
    robot.useDown()
    robot.placeDown()
    for x = 1, (size - 1) do
      robot.forward()
      robot.swingDown()
      robot.useDown()
      robot.placeDown()
    end
    -- поворот
    if y % 2 == 1 then
      robot.turnLeft()
      robot.forward()
      robot.turnLeft()
    else
      robot.turnRight()
      robot.forward()
      robot.turnRight()
    end
  end
  if(size%2 == 0) then
    robot.turnLeft()
    robot.turnLeft()
    robot.turnLeft()
    -- возвращение на базу
    for y = 1, (size - 1) do robot.forward() end
    robot.turnRight()
    robot.turnLeft()
    robot.forward()
    robot.turnRight()
    robot.forward()
    robot.turnAround()
      else
    for y = 1, (size - 1) do robot.forward() end
    robot.turnLeft()
    for y = 1, (size) do robot.forward() end
    robot.turnRight()
    robot.forward()
    robot.turnAround()    
    end
end
function dropitem()
  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
if arg1 == "primary" then
  farm()
  if robot.count(2) == 64 then dropitem() end
end
local primary = nil
while true do
  -- таймер(1час)
  for i = 1, 10 do
    os.sleep(370)
    print((10 * i) .. '%')
  end
  farm()
  if robot.count(2) == 64 then dropitem() end
end

Пару слов об аргументах

*name*.lua primary(принудительный запуск сбора)

*name*.lua size *size*(установка размера фермы)

Также о настройке

1.Ферма должна быть одинаковая по размерам. т.е. 15x15 или 9x9 и т.д.

2.Робот должен быть установлен следующим образом(см.ниже)

3.(по желанию) дать роботу мотыгу чтобы он сам вспахал землю(в принципе просто можно задать ему размеры и дать семена и он сам вспашет землю и посадит семена)

jT9ez9C.png

Просьба не судить строго так как это моя первая программа и вообще первая программа на языке LUA

Жду адекватной критики и предложений.

Спасибо за помощь игроку Asummonster

Изменено пользователем Xottabich
Добавил закрытие потока,добавлена табуляция, пофикшенбаг который не давал работать на чётной по размеру ферме(6x6,8x8 и тд)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если робот стучится в одну из стен вашей фермы или делает лишний шаг, то вы указали неправильные размеры или неправильно посчитали размер фермы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Исправлено

Изменено пользователем Xottabich

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...