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

opencomputers Кишковая бурилка (копалка 3х3)

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

Программа, которая заставляет робота копать 3x3. 

 

Скриншоты работы:

 

2016040218_6435162_21379639.png
2016040218_5096760_21379640.png
2016040218_4371125_21379641.png
2016040218_4252634_21379642.png
2016040218_1639627_21379643.png
2016040218_5689913_21379644.png
2016040218_1007338_21379645.png

 

 

TODO:

 

 

  • Движение робота к сундуку наверху, если инвентарь заполнен
  • Исправить сбивания программы, наладить проверку блоков и смену инструмента
  • Опциональная передача данных и состояния на планшет/компьютер/очки

 

 

 

Программа заставляет робота копать слоями 3х3 и выбирать подходящий инструмент при вскопке.

 

Скачать прототип можно вот где-то тут

 

 

ЖУКАМИ НЕ КИДАТЬ! ТАПКАМИ ТОЖЕ!

 

 

Что думаете?

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

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


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

Что думаете?

Чорт! Мои глаза!

А геолайзер там зачем?

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


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

Чорт! Мои глаза!

А геолайзер там зачем?

А как ты предлагаешь различать землю и руду с камнем?

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


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

Добывать их все-равно приходится, поэтому, контроллером инвентаря можно их на финише отсеивать.

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


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

Добывать их все-равно приходится, поэтому, контроллером инвентаря можно их на финише отсеивать.

Дак ты же не будешь лопатой алмазы копать. А землю киркой.

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


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

Добывать их все-равно приходится, поэтому, контроллером инвентаря можно их на финише отсеивать.

Лучше вообще лишнее не добывать. Экономится и время и энергия и ресурс инструмента. И серверу легче.

 

А про код не буду писать, поберегу тапки

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


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

Дак ты же не будешь лопатой алмазы копать. А землю киркой.

Бур - универсальная штука, а роботу, в общем, без разницы чем копать (но чем меньше инструментов, тем лучше)

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


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

Бур - универсальная штука, а роботу, в общем, без разницы чем копать (но чем меньше инструментов, тем лучше)

Может, я позже сделаю через GUI выбор бура или кирки с лопатой.

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


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

Может, я позже сделаю через GUI выбор бура или кирки с лопатой.

Я тоже, вначале думал о замене инструмента, а потом понял, что здесь (на этом сервере) - с буром проще.

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


Ссылка на сообщение
Поделиться на других сайтах
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 

Не одного отступа в коде найдено не было. Нехорошо  :angry:

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


Ссылка на сообщение
Поделиться на других сайтах
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 

Не одного отступа в коде найдено не было. Нехорошо  :angry:

 

Глобальные исправлю. А зачем отступы делать? Разве в ифах и циклах.

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


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

Глобальные исправлю. А зачем отступы делать? Разве в ифах и циклах.

Отступы - это древняя традиция повышающая читаемость кода многократно. Не используешь отступы - пишешь некрасивый код.

Вот код игры Flappy Block от newbie http://pastebin.com/JqedTE9u

Посмотрев этот код я улучшил свои знания lua языка. Видишь отступы - они везде. Их все используют.

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


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

Их все используют.

Кроме меня)

 

P.S. а блоков нет. Блоки где?

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

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


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

Глобальные исправлю. А зачем отступы делать? Разве в ифах и циклах.

Отступ используется для того что выделить логические блоки они же и блоки видимости переменных - do end, а это циклы, условия, функции. В других языках  - это {}

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


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

Программа плохо оптимизирована. Очень, очень, очеееень много повторных вычислений. Это плохо. Очень, очень, очееень.

Так как тапками нельзя кидать, буду кидать снеж... (весна ж)... жуков..

 

* кидает жуков *

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


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

Программа маленькая и простая. Для новичка это нормальная работа, но несомненно требуется оптимизация.

Даже прочитать нормально код без отступов сложно. Не знаю как ты с таким подходом это написал. Так же запутаться легко.

Я уже не говорю о больших программах, где без отступов мгновенно запутаешься и ничего не поймёшь, где развитые логические ветки. Например в алгоритме генерации комнат моей игры Cube. Там настолько сложный разветвлённый алгоритм сортировки таблицы (альтернатива рекурсии), что я сам лишний раз стараюсь в него не лесть. Убрать отступы там равносильно самоубийству. Совершенно потеряется представление о том что происходит.

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


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

Для новичка норм программка.

Но для такого эпичного названия программки ее еще нужно улучшать и улучшать, а точнее еще не один раз переписать с нуля :)

 

*кидает жуков*

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


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

Что-то я не заметил ни одной проверки на движение. Мне кажется эта программа пойдет только в одиночке, на сервере же тебя будет ожидать такой веселый сюрприз, робот будет пропускать некоторые ходы, повороты может и не пропустит, но забыть двинуться, вскопать, это в стиле майна. И как я понимаю если в твоем 3х3 будет к примеру среди блоков земли будет булыжник, подозреваю, что его будут копать лопатой. И присоединяюсь к людям выше, соблюдай отступы, это-ж полное убийство читать такой код. Насчет оптимизации, вот гляди, робот же может рубить не только под собой, но и перед собой, и над собой. Подумай над этим, ведь проще сделать чтоб было меньше движений, но больше копки. По моим подсчетам кубик 3х3х3 можно вскопать за 12 движений робота, а не за 27 (или около того, точно не считал), а это уже существенная экономия энергии. Я тут подумал, а может вместо геосканера просто сравнивать стоящий блок под роботом с блоком в инвентаре?

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


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

Я тут подумал, а может вместо геосканера просто сравнивать стоящий блок под роботом с блоком в инвентаре?

Способ активно использовался в черепаховую эру, не знавшую радостей геосканера. В эпоху роботов экономия слота апргейда оборачивается тратой слотов инвентаря, замедлением сканирования, а главное – необходимостью перед каждой копкой заполнять образцами слоты инвентаря.

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


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

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

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

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

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

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

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

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

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


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