Здравствуйте, друзья мои!
После создания моей первой программы для робота, у меня нет недостатка в пшенице. Но вот не задача. Ресурсов тоже нет. А так как я очень ленивая задница и ходить копать самому уже не охота - пусть это за меня делает робот! Сказано - сделано (через месяц).
Представляю вашему вниманию программу для робота "Miner" ("Шахтер").
Робот, с минимальным железом на борту, с помощью данной программы может добывать ресурсы на заданном участке не упустив не единого алмазика (ну или уголька).
Системные требования:
Корпус 1-го уровня
Процессор 1-го уровня
1 планка памяти 1,5-го уровня (это с запасом)
HDD 1-го уровня
Видеокарта -1го уровня
Lua-BIOS
Монитор 1-го уровня
Клавиатура
Улучшение "Инвентарь"
Улучшение "Контейнер" 1-го уровня
Геоанализатор
Дополнения для обслуживания робота:
Зарядное устройство
Преобразователь энергии
Источник энергии
Сундук (1-2 шт.)
Подготовка, установка, настройка и запуск.
Робот устанавливается на поверхности (можно и в пещере), перед будущей шахтой справа.
Под робота ставится сундук. Сбоку ставится зарядное устройство с источником питания. Например, я использую генератор из IC2 через АКБ, на угле, который добыл робот.
Роботу необходимо выдать кирку и геоанализатор. Включаем робота и запускаем программу.
Первое что робот спрашивает - это какая у шахты будет ширина. Т.е. это размер второстепенных тоннелей. Мин. значение - 2. Если ввести некорректное значение (<2) или не ввести вовсе, то робот примет значение по умолчанию равное 2.
Второй вопрос - это длина. Т.е. размер главного тоннеля (от робота прямо по курсу). В связи со спецификой работы робота, введенное значение будет округлено до десятков в меньшую сторону, но не менее 10. Например, если ввести 34, то шахта будет 30 блоков в длину. Значение по умолчанию 10.
Третий вопрос - глубина шахты. Отсчет ведется от места старта робота. Уровень на котором он стоит = 0, на один блок ниже = 1 и т.д. Например, если робот стоит на уровне 64, а бедрок находится на уровне 1 и вам надо дорыть до него, тогда задайте глубину 62. Так же, если ввести отрицательное значение или не ввести вовсе - значение будет 0.
И последний вопрос - с какой глубины начать копать. Этот параметр удобен тем, что робот может начать копать с любой глубины, а не от точки старта. Например мне нужны алмазы. Я ставлю робота на поверхность (например высота 64), задаю ему глубину шахты = 59 (т.к. с глубины 5 начинается бедрок, а его робот грызть не умеет) и глубину для начала раскопок = 52 (основные залежи алмазов на глубине 12-5). После старта робот выкопает себе вертикальный тоннель, доберется до начала раскопок и начнет работать. Затем вернется тем же путем.
После прохода одного уровня (одной высоты), робот возвращается на место старта, вываливает всё что нарыл вниз (надеюсь вы не забыли поставить под него сундук) и заряжается 20 сек. После этого идет на сл. глубину.
Кстати, чуть не забыл. Робот добывает все блоки, кроме камня, булыжника, земли и гравия.
Достоинства данной программы:
Минимальные системные требования
Добывает всё под чистую (кроме блэк-листа)
Начинает копать с любого уровня
Есть немного места для установки дополнительных апгрейдов
Из-за встречи с мобом программа не собъется
Добывает не только внутри шахты, но и ее внешний слой
Недостатки:
Если по каким-то причинам робот собьется (а вы его сможете найдете), то его не возможно вернуть в нужное русло. Только выключить, вернуть руками на старт и запустить заново с последней высоты.
Необходимо следить, чтобы инструмент робота не сломался.
Необходимо следить за уровнем энергии робота.
Не может сам снабжать себя энергией.
Заряжается на старте 20 сек. (может ему этого мало или много, в зависимости от размера шахты)
Планы на будущее:
Если робот собьется, то после повторного запуска сам начнет копать с глубины на которой закончил.
Научить робота работать с буром из IC2 (зарядить, положить, взять)
Ввести блек-лист задаваемый игроком.
Робот будет сам заряжаться сколько ему необходимо.
Если нужно вмешательство игрока, робот будет подавать сигнал.
Разный цвет подсветки, в зависимости от выполняемой операции.
Т.к. реализовать бОльшую самодостаточность робота с таким железом крайне сложно (хотя еще небольшой запас есть), далее будет программа для робота второго уровня.
Просьбы:
Как всегда жду здоровой критики, идей, предложений. Единственное ограничение - это должен быть робот 1-го уровня. Нужны советы в оптимизации кода. В коде много комментариев. Это для меня и др. новичков. Так что не пинать.
Если вы знаете подобную программу - покажите ее, пожалуйста. Хочется сравнить. Зашел в соседнюю ветку, посмотрел, опупел. Моя прога еще только в зачатке. К админам сервера: придумайте, пожалуйста, что-нибудь с лагами на сервере. В сингле программа работает идеально. На сервере - пропускает команды, выполняет их по два раза. В общем жуть. Робот зарывается в такую опу, что приходится его часами искать.
А! Собственно программа. http://pastebin.com/XkivBpat