Перейти к публикации

В ближайшее время постараюсь разобраться с картой сервера/ЛК/бб кодами

Внимание, с 14 февраля до 20 февраля могут проходить работы на сервере, где также находится лаунчсервер. В связи с этим авторизация в лаунчере может не работать

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
  • Like 4

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


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

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

  • Like 2

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


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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

 

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

http://pastebin.com/r78QEYFG

  • Like 1

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


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

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

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

 

 

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
  • Like 1

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


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

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

  • Like 2

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×