[Пример] Моя первая программа Dig v 1.0 для робота OpenComputers

Artmoneyse

Администратор
Команда форума
Администратор
дрон.jpg

Данная программа заставляем нашего дрона (робота) копать тоннель вперед на 100 блоков (можно увеличить).
Тоннель в 3 блока высоты и 1 блок ширины.
Все добытые ресурсы попадают в инвентарь дрона.
Копает через лаву и воду.
Копает предметом который вы ему положите в слот (кирка, бур, ваджра).

Код:
Код:
--var
local r = require("robot") --для работы требуется робот

local component = require("component")
local g = component.generator --без генератора не даем запустить дрона
--begin
b = 0 --Сбрасываем счетчик блоков

while b < 100 do --если прокопали меньше 100 блоков то копаем дальше
r.swing() --ломаем блок перед собой
r.forward() --передвигаемся на 1 блок вперед
r.swingUp() -- ломаем блок над собой
r.swingDown() --ломаем блок под собой
b = b + 1 --прокопали еще 1 блок
end
print("Complete!") --выводим сообщение что закончили копать
дрон.jpg
 
Последнее редактирование:

Artmoneyse

Администратор
Команда форума
Администратор
Вот еще 5 минут моей работы и робот копает 3на3 тоннель.
Dig v 1.1
Код:
Код:
--var
local r = require("robot") --для работы требуется робот

local component = require("component")
local g = component.generator -- генератор
--begin
function dig() --функция которая заставляем дрона копать 3 блока перед собой
r.swing() --ломаем блок перед собой
r.forward() --передвигаемся на 1 блок вперед
r.swingUp() -- ломаем блок над собой
r.swingDown() --ломаем блок под собой
end

b = 0 --Сбрасываем счетчик блоков
r.turnRight()
while b < 100 do --если прокопали меньше 100 блоков то копаем дальше
dig() --копаем
r.turnLeft() --поворачиваем дрона влево
dig() --копаем
r.turnLeft() --поворачиваем дрона влево
dig() --копаем
dig() --копаем
r.turnRight() --поворачиваем дрона вправо
dig() --копаем
r.turnRight() --поворачиваем дрона вправо
dig() --копаем
b = b + 1 --прокопали еще 1 блок
end
print("Complete!") --закончили копать
дрон.jpg
 
Последнее редактирование:

Morlock

Активный участник
Старожил
Ай праграмиравание... :D
Как разнообразие... весьма. Но не для всех.
 

Artmoneyse

Администратор
Команда форума
Администратор
Ай праграмиравание... :D
Как разнообразие... весьма. Но не для всех.
Да там столько желающих появилось, прям все кодеры.
Хотя пока только могут юзать готовую ОС в которой есть GUI, на больше еще не выросли.
 

Artmoneyse

Администратор
Команда форума
Администратор
Новая версия
Сам ставит факела
Сам выгружает ресурсы в сундук
Код:
--var
local r = require("robot") --для работы нужно запускать на роботе
local note = require("note") --требуется API нотного блока
local component = require("component")
local g = component.generator
local sides = require('sides')
b = 0
--begin
function dig() --функция добычи 3 блоков перед роботом
go() --дивагаемся на 1 блок, если мешают блоки то ломаем
r.swingUp() --ломаем блок над роботом
r.swingDown()  --ломаем блок под роботом
end

function go() --функция которая заставляет двигаться вперед, если мешают блоки то ломает
while not r.forward() do --если не получается двигаться вперед
r.swing() --ломаем блок перед собой
end
end

function unloadInv() --функция выгрузки инвентаря робота
  local selectedSlot = r.select() --запоминаем слот который был выбран
  local k = 0 --сброс
  r.select(16) --выбираем 16 слот в котором должны быть сундуки
  r.placeDown() --ставим сундук под робота
  for k = 1, 14 do --перебираем все слоты с ресурсами
    r.select(k) --выбираем слот под индексом к
    r.dropDown() --выгружаем все ресурсы вниз а если нет сундука то выбрасываем на пол
  end
  r.select(selectedSlot) --выбираем слот который был выбран изначально
end

function checkInv() --функция проверки инвентаря, если заполнен то идет домой выгружать
  if r.count(14) > 0 then --если инвентарь заполнен, заполнен 14 слот
  r.turnRight() -- повораичваем на право
    moveTohome(b) --двигаемся на b блоков, домой
  unloadInv() -- выгружаем ресурсы
  r.turnRight() -- повораичваем на право
  r.turnRight() -- повораичваем на право
  moveTohome(b)  --двигаемся на b блоков, там где закончили добычу
  r.turnRight() -- повораичваем на право
  end
end

function moveTohome(step) --функция заставляет робота двигаться на step блоков и издавать звук каждые 5 блоков
i = 0 --сброс
bip = 0 --сброс
while i < step do -- выполняем код ниже пока не пройдем step блоков
go() --перемещаемся на 1 блок
if bip == 5 then --если прошли 5 блоков
note.play(80, 0.1) --издаем звук
bip = 0 --сбрасываем счетчик блоков
end
bip = bip + 1 --считаем через сколько блоков издать звук
i = i + 1 --считаем пройденые блоки
end
end

note.play(90, 0.5) --издаем звук
r.turnRight() --поворачиваем вправо
fakelblock = 0 --сброс
while b < 100 do
dig() --копаем перед собой и передвигаемся на 1 блок вперед
dig() --копаем перед собой и передвигаемся на 1 блок вперед
dig() --копаем перед собой и передвигаемся на 1 блок вперед
if fakelblock == 10 then -- если прошли 10 блоков от предыдущего факела
fakelblock = 0 --сброс счетчика блоков через которые ставить факела
r.select(15) -- выбираем 15 слот в котором должны быть факела
r.placeDown() -- ставим предмет из 15 слота, факел
r.select(1) --выбираем 1 слот
end
r.turnLeft() -- поворачиваем влево
dig()
r.turnLeft() -- поворачиваем влево
dig() --копаем перед собой и передвигаемся на 1 блок вперед
dig() --копаем перед собой и передвигаемся на 1 блок вперед
dig() --копаем перед собой и передвигаемся на 1 блок вперед
dig() --копаем перед собой и передвигаемся на 1 блок вперед
dig() --копаем перед собой и передвигаемся на 1 блок вперед
dig() --копаем перед собой и передвигаемся на 1 блок вперед
r.turnRight() --поворачиваем вправо
dig() --копаем перед собой
r.turnRight() --поворачиваем вправо
dig() --копаем перед собой
dig() --копаем перед собой
dig() --копаем перед собой
b = b + 2 --считаем пройденные блоки
fakelblock = fakelblock + 2 --считаем через сколько блоков поставить факел
checkInv() -- проверяем не переполнен ли инвентарь
end
r.turnRight() --поворачиваем вправо
note.play(70, 0.1) -- издаем звук
moveTohome(b)
note.play(50, 0.5) -- издаем звук
unloadInv()
  r.turnRight() --поворачиваем вправо
  r.turnRight() --поворачиваем вправо
print("Complete!") --выводим сообщение в консоль робота
 
Сверху