danshat 55 Опубликовано: 2 апреля, 2016 (изменено) Программа, которая заставляет робота копать 3x3. Скриншоты работы: TODO: Движение робота к сундуку наверху, если инвентарь заполнен Исправить сбивания программы, наладить проверку блоков и смену инструмента Опциональная передача данных и состояния на планшет/компьютер/очки Программа заставляет робота копать слоями 3х3 и выбирать подходящий инструмент при вскопке. Скачать прототип можно вот где-то тут ЖУКАМИ НЕ КИДАТЬ! ТАПКАМИ ТОЖЕ! Что думаете? Изменено 3 апреля, 2016 пользователем danshat Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 2 апреля, 2016 Что думаете?Чорт! Мои глаза! А геолайзер там зачем? 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
danshat Автор темы 55 Опубликовано: 2 апреля, 2016 Чорт! Мои глаза! А геолайзер там зачем? А как ты предлагаешь различать землю и руду с камнем? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 2 апреля, 2016 Добывать их все-равно приходится, поэтому, контроллером инвентаря можно их на финише отсеивать. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
danshat Автор темы 55 Опубликовано: 2 апреля, 2016 Добывать их все-равно приходится, поэтому, контроллером инвентаря можно их на финише отсеивать. Дак ты же не будешь лопатой алмазы копать. А землю киркой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 2 апреля, 2016 Добывать их все-равно приходится, поэтому, контроллером инвентаря можно их на финише отсеивать.Лучше вообще лишнее не добывать. Экономится и время и энергия и ресурс инструмента. И серверу легче. А про код не буду писать, поберегу тапки 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 2 апреля, 2016 Дак ты же не будешь лопатой алмазы копать. А землю киркой.Бур - универсальная штука, а роботу, в общем, без разницы чем копать (но чем меньше инструментов, тем лучше) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
danshat Автор темы 55 Опубликовано: 2 апреля, 2016 Бур - универсальная штука, а роботу, в общем, без разницы чем копать (но чем меньше инструментов, тем лучше) Может, я позже сделаю через GUI выбор бура или кирки с лопатой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
davial 1 972 Опубликовано: 2 апреля, 2016 Может, я позже сделаю через GUI выбор бура или кирки с лопатой. Я тоже, вначале думал о замене инструмента, а потом понял, что здесь (на этом сервере) - с буром проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 2 апреля, 2016 robot = require("robot") component = require("component") sides = require("sides") inv = component.inventory_controller geo = component.geolyzer Глобальные переменные? Серьёзно? Зачем? function mine() robot.swingDown() robot.forward() robot.swingDown() robot.forward() robot.swingDown() robot.turnLeft() robot.forward() robot.swingDown() robot.turnLeft() robot.forward() robot.swingDown() robot.forward() robot.swingDown() robot.turnRight() robot.forward() robot.swingDown() robot.turnRight() robot.forward() robot.swingDown() robot.forward() robot.swingDown() robot.turnRight() robot.forward() robot.forward() robot.turnRight() robot.forward() robot.forward() robot.down() robot.turnRight() robot.turnRight() end Не одного отступа в коде найдено не было. Нехорошо 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
danshat Автор темы 55 Опубликовано: 2 апреля, 2016 robot = require("robot") component = require("component") sides = require("sides") inv = component.inventory_controller geo = component.geolyzer Глобальные переменные? Серьёзно? Зачем? function mine() robot.swingDown() robot.forward() robot.swingDown() robot.forward() robot.swingDown() robot.turnLeft() robot.forward() robot.swingDown() robot.turnLeft() robot.forward() robot.swingDown() robot.forward() robot.swingDown() robot.turnRight() robot.forward() robot.swingDown() robot.turnRight() robot.forward() robot.swingDown() robot.forward() robot.swingDown() robot.turnRight() robot.forward() robot.forward() robot.turnRight() robot.forward() robot.forward() robot.down() robot.turnRight() robot.turnRight() end Не одного отступа в коде найдено не было. Нехорошо Глобальные исправлю. А зачем отступы делать? Разве в ифах и циклах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 2 апреля, 2016 Глобальные исправлю. А зачем отступы делать? Разве в ифах и циклах. Отступы - это древняя традиция повышающая читаемость кода многократно. Не используешь отступы - пишешь некрасивый код. Вот код игры Flappy Block от newbie http://pastebin.com/JqedTE9u Посмотрев этот код я улучшил свои знания lua языка. Видишь отступы - они везде. Их все используют. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
danshat Автор темы 55 Опубликовано: 2 апреля, 2016 (изменено) Их все используют. Кроме меня) P.S. а блоков нет. Блоки где? Изменено 2 апреля, 2016 пользователем danshat Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 2 апреля, 2016 Глобальные исправлю. А зачем отступы делать? Разве в ифах и циклах. Отступ используется для того что выделить логические блоки они же и блоки видимости переменных - do end, а это циклы, условия, функции. В других языках - это {} 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 2 апреля, 2016 Программа плохо оптимизирована. Очень, очень, очеееень много повторных вычислений. Это плохо. Очень, очень, очееень. Так как тапками нельзя кидать, буду кидать снеж... (весна ж)... жуков.. * кидает жуков * 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 3 апреля, 2016 Программа маленькая и простая. Для новичка это нормальная работа, но несомненно требуется оптимизация. Даже прочитать нормально код без отступов сложно. Не знаю как ты с таким подходом это написал. Так же запутаться легко. Я уже не говорю о больших программах, где без отступов мгновенно запутаешься и ничего не поймёшь, где развитые логические ветки. Например в алгоритме генерации комнат моей игры Cube. Там настолько сложный разветвлённый алгоритм сортировки таблицы (альтернатива рекурсии), что я сам лишний раз стараюсь в него не лесть. Убрать отступы там равносильно самоубийству. Совершенно потеряется представление о том что происходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 3 апреля, 2016 Для новичка норм программка. Но для такого эпичного названия программки ее еще нужно улучшать и улучшать, а точнее еще не один раз переписать с нуля *кидает жуков* 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior 586 Опубликовано: 3 апреля, 2016 Что-то я не заметил ни одной проверки на движение. Мне кажется эта программа пойдет только в одиночке, на сервере же тебя будет ожидать такой веселый сюрприз, робот будет пропускать некоторые ходы, повороты может и не пропустит, но забыть двинуться, вскопать, это в стиле майна. И как я понимаю если в твоем 3х3 будет к примеру среди блоков земли будет булыжник, подозреваю, что его будут копать лопатой. И присоединяюсь к людям выше, соблюдай отступы, это-ж полное убийство читать такой код. Насчет оптимизации, вот гляди, робот же может рубить не только под собой, но и перед собой, и над собой. Подумай над этим, ведь проще сделать чтоб было меньше движений, но больше копки. По моим подсчетам кубик 3х3х3 можно вскопать за 12 движений робота, а не за 27 (или около того, точно не считал), а это уже существенная экономия энергии. Я тут подумал, а может вместо геосканера просто сравнивать стоящий блок под роботом с блоком в инвентаре? 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 3 апреля, 2016 Я тут подумал, а может вместо геосканера просто сравнивать стоящий блок под роботом с блоком в инвентаре?Способ активно использовался в черепаховую эру, не знавшую радостей геосканера. В эпоху роботов экономия слота апргейда оборачивается тратой слотов инвентаря, замедлением сканирования, а главное – необходимостью перед каждой копкой заполнять образцами слоты инвентаря. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 3 апреля, 2016 *кидает жуков* Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах