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

Копание тоннеля 3х3. Робот-экскаватор

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

  За основу был взят код : "Miner 3x3" http://pastebin.com/hzJZtAWA   (Спасибо Programist135 за любезно предоставленную программу).

   При "ковырянии" были замечены закономерности, которые превратились в функцию Dig(). (Позже увидел, что не один я использую такой приём).

   Далее ... ну не устроило меня, движение робота со многими разворотами - решил выбрать движение "змейкой" или "зигзагом". 

   И понял ... что интуиция меня - не подвела. 

   Количество ходов уменьшилось на 2 (а с учётом выбрасывания комманды Around, можно сказать, что почти на 3) за каждые вскопанные 9 блоков.

 

   Код :

   Версия 2-я :http://pastebin.com/M9zBTNyy (сырая старая версия.)

   Версия 5-я : https://pastebin.com/L8kKTPzp (доработанная с учётом сыпучих блоков, мобов и лагов сервера)

   Скрины : https://yadi.sk/d/XwlHrvnchMXpS

 

   Программа писалась, конкретно - под работу с алмазным буром(или иным "универсальным инструментом, копающим всё.)

 

  Минимальная комплектация робота :   

   

Обязательные минимальные элементы компоновки :

ЦП-1 уровня
ОЗУ- планка 1 уровня(1шт.)
Винчестер - 1 уровня(1 шт.)
ЛуаБИОС (как же без него :))
Монитор - 1 уровня, клавиатура (для исправления "на ходу")
Апгрейд-инвентарь(чтобы робот мог держать "в руках" бур)

Дисковод(но не обязательно. Программу можно записать на винчестер в компе, а потом - установить в робота)

 

 

   P.S. Данный "продукт", выложен с целью ознакомления, с вариантом решения конкретной проблемы. Автор кода(т.е. ваш покорный слуга) - не несёт ответственности, за любой ущерб в игре, от использования данного кода в работе ваших роботов  :blum2: , а также негативно относится : к создания фанклубов или религиозных течений "моего имени".  :whistle3:

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

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


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

Может перестанем делать велосипеды, начнем делать вертолеты? 

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


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

Опечатка в 16 строке. Можно сделать, чтобы он ходил змейкой вдоль туннеля, тогда, по завершении он окажется в том же месте, откуда начал.

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

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


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

Опечатка в 16 строке. Можно сделать, чтобы он ходил змейкой вдоль туннеля, тогда, по завершении он окажется в том же месте, откуда начал.

Уже исправил. При проверке в сингле - исправлял "на месте", а тут - забыл.

А если у меня туннель будет 256 чанков ? Тоже вдоль ? :)

Может перестанем делать велосипеды, начнем делать вертолеты? 

Доросту - буду делать ... напильником ... из ... паровоза. :D

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

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


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

Новички используют эту программу, но не знают, какие опасности она таит.

Нету проверки пустых блоков, в результате робот делает лишние движения.

 

По-быстрому перевел tunnel из ComputerCraft, хоть и не такая компактная, зато надежная.

http://pastebin.com/r78QEYFG

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


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

Нет предела совершенству.

Сделал более компактную версию без излишеств и современных технологий.

 

 

tArgs = {...}

if #tArgs ~= 1 then
  print('Usage: tunnel <lenght>')
  os.exit()
end

local r = require('component').robot

local function dig(s)
  while r.detect(s) do r.swing(s) end os.sleep(0.1)
end

for i = 1, tArgs[1] do
  dig(3)
  r.move(3)
  r.turn(false)
  for j = 1, 2 do
    dig(3)
    dig(1)
    r.move(1)
    dig(3)
  end
  r.turn(false)
  r.turn(false)
  for k = 1, 2 do
    dig(3)
	dig(0)
	r.move(0)
    dig(3)
  end
  r.turn(false)
end

 

А это можно запустить прямо в интерпретаторе (259 байт):

r=require('component').robot l,d=io.read(),function(s)while r.detect(s)do r.swing(s)end os.sleep()end for i=1,l do d(3)r.move(3)r.turn(false)for j=1,2 do d(3)d(1)r.move(1)d(3)end r.turn(false)r.turn(false)for k=1,2 do d(3)d(0)r.move(0)d(3)end r.turn(false)end
В терминале пишем 'lua', копируем туда строку, жмем 'Enter', вводим длину туннеля, жмем 'Enter' и все. Изменено пользователем Doob

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


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

Добавил ссыль на немного доработанную версию.

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


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

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

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

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

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

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

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

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

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


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