PongWithBreakout

Farmer

Mar 18th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.59 KB | None | 0 0
  1. --//-----------Как очевидно на основе какого кода это сделано, не так ли?------------------------//--
  2.  
  3. --Заметка: роботу вот это всё снизу требуется
  4. --для работы. В будущем планирую сделать альтер-
  5. -- -нативные режимы работы при отсутствии
  6. --каких-нибудь компонентов(кроме геоанализатора,
  7. --ибо зачем вообще тогда эта программа?)
  8. --Хорошее предисловие, лол.
  9.  
  10. local robot = require("robot")
  11. local component = require("component")
  12. local geo = component.geolyzer
  13. local inv = component.inventory_controller
  14. local rs = component.redstone
  15. local side = require("sides")
  16. local comp = require("computer")
  17. local term = require("term")
  18.  
  19. local ysize = 5  --размер поля
  20. local xsize = 9
  21. local SLEEP = 1 --Глобальные переменные: для быдлокодера нет лучше ничего
  22. local MaxCharge = 60 --(кроме констант прямо в функциях)
  23.  
  24. function charge()  --Функция для зарядки
  25.   for i = 1, 100 do
  26.     if ((comp.energy() / comp.maxEnergy()) * 100) <= MaxCharge then
  27.       rs.setOutput(side.back, 3)
  28.       term.clear()
  29.       term.write("Charging... ("..i.. " %)") --Просто отображение оставшегося времени в % :)
  30.     else
  31.       rs.setOutput(side.back, 0)
  32.       term.clear()
  33.       term.write("Charged already. (" .. i .. "%)") --Те же яйца.
  34.     end
  35.   os.sleep(SLEEP)
  36.   end
  37. end    
  38.  
  39. function check() --функция для проверки роста пшеницы
  40.   local t = geo.analyze(0)
  41.     if t["metadata"] == 7 then
  42.       return t["metadata"]
  43.     else
  44.       return nil
  45.     end
  46. end
  47.  
  48. function harvest()  --Это основная функция
  49.  robot.forward() --По коням
  50.    for y = 1, ysize do    --Проходим поле
  51.     for x = 1, (xsize-1) do  --Здесь одна линия
  52.       if check() == 7 then  --Если пшеница уже выросла
  53.         robot.swingDown()   --Собираем
  54.         robot.placeDown()   --И засеиваем
  55.       end
  56.       robot.forward()    --Передвигаемся вперёд
  57.     end
  58.   if y % 2 == 0 then  --Поворачиваем
  59.     robot.turnLeft()
  60.     if check() == 7 then  --(1)На этих участках тоже
  61.       robot.swingDown()  --что-то растёт.
  62.       robot.placeDown()
  63.     end
  64.   if y < ysize then --Проверка для возврата(2)
  65.       robot.forward()
  66.     end
  67.     robot.turnLeft()  
  68.   else
  69.     robot.turnRight()
  70.     if check() == 7 then    --(1)
  71.       robot.swingDown()
  72.       robot.placeDown()
  73.     end
  74.   if y < ysize then    --(2)P.S. такой костыль...
  75.       robot.forward()
  76.     end
  77.     robot.turnRight()
  78.   end
  79. end  --Возвращаемся...
  80.   for y = 1, (xsize-1) do
  81.     robot.forward()
  82.   end
  83.   robot.turnRight()
  84.   for y = 1, (ysize-1) do
  85.     robot.forward()
  86.   end
  87.   robot.turnLeft()
  88.   robot.forward()
  89.   robot.turnAround()  --Блудный сын вернулся!
  90. end
  91.  
  92. function unload()  --Функция для разгрузки продуктов
  93.   for c = 2, 16 do
  94.     robot.select(c)
  95.     if robot.count() > 0 then
  96.       inv.dropIntoSlot(0, (c-1))
  97.     else
  98.       robot.select(1)
  99.       if robot.count() > 4 then
  100.         inv.dropIntoSlot(0, 17, (robot.count() - 4))
  101.       end
  102.       break
  103.     end
  104.   end
  105. end
  106.    
  107.  
  108. while true do
  109. charge()
  110. harvest()
  111. unload()
  112. end
Advertisement
Add Comment
Please, Sign In to add comment