davial 1 972 Опубликовано: 19 июня, 2015 (изменено) За основу был взят код : "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. Данный "продукт", выложен с целью ознакомления, с вариантом решения конкретной проблемы. Автор кода(т.е. ваш покорный слуга) - не несёт ответственности, за любой ущерб в игре, от использования данного кода в работе ваших роботов , а также негативно относится : к создания фанклубов или религиозных течений "моего имени". Изменено 27 июня, 2018 пользователем davial 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 19 июня, 2015 Может перестанем делать велосипеды, начнем делать вертолеты? 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 19 июня, 2015 (изменено) Опечатка в 16 строке. Можно сделать, чтобы он ходил змейкой вдоль туннеля, тогда, по завершении он окажется в том же месте, откуда начал. Изменено 19 июня, 2015 пользователем Doob 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
davial Автор темы 1 972 Опубликовано: 19 июня, 2015 (изменено) Опечатка в 16 строке. Можно сделать, чтобы он ходил змейкой вдоль туннеля, тогда, по завершении он окажется в том же месте, откуда начал. Уже исправил. При проверке в сингле - исправлял "на месте", а тут - забыл. А если у меня туннель будет 256 чанков ? Тоже вдоль ? Может перестанем делать велосипеды, начнем делать вертолеты? Доросту - буду делать ... напильником ... из ... паровоза. Изменено 21 июня, 2015 пользователем davial Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Programist135 231 Опубликовано: 29 июня, 2015 Ммм.. Пожалуйста =) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 1 августа, 2015 Новички используют эту программу, но не знают, какие опасности она таит. Нету проверки пустых блоков, в результате робот делает лишние движения. По-быстрому перевел tunnel из ComputerCraft, хоть и не такая компактная, зато надежная. http://pastebin.com/r78QEYFG 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 1 августа, 2015 (изменено) Нет предела совершенству. Сделал более компактную версию без излишеств и современных технологий. 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' и все. Изменено 1 августа, 2015 пользователем Doob 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
davial Автор темы 1 972 Опубликовано: 27 июня, 2018 Добавил ссыль на немного доработанную версию. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах