Взлом Майнкрафт на Raspberry Pi

Взлом Майнкрафт на Raspberry Pi

Raspberry Pi 2-удивительно способное устройство, учитывая его цену ниже 30 фунтов стерлингов. Он поставляется с предустановленной версией Minecraft, а также API, который позволяет писать код для запуска в виртуальном мире. Вы делаете это на Python, который прост в освоении. Сочетание Pi, Python и Minecraft предоставляет прекрасную возможность начать изучать возможности программирования. И острые ощущения от того, что вы видите, как дом строится на виртуальном ландшафте, тоже не только для детей.

Сценарии в Майнкрафте

Майнкрафт – это открытая игра-песочница, в которой нет сюжетной линии, которой можно следовать. Его иногда называют “виртуальным Lego”, так как игрок может построить любую конструкцию, используя имеющиеся в его распоряжении блоки. Версия, поставляемая в комплекте с Raspberry Pi, имеет ограниченный набор функций, подходящих для ее образовательной роли, так что вам не нужно беспокоиться, например, о том, что вас преследуют зомби. Взаимодействие с этим миром не требует специальной настройки, только недавняя сборка операционной системы Raspbian плюс среда программирования. Я бы выбрал Geany, который вы можете установить, открыв LXTerminal и набрав:

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

Чтобы код заработал, загрузите его в Geany, затем запустите Minecraft и создайте новый мир. Нажмите клавишу Tab, чтобы освободить курсор из окна Minecraft, и щелкните значок шестеренки в Geany (или нажмите F5), чтобы запустить скрипт. Вы бы видели, как дом волшебным образом собирается сам по себе. Если вы этого не сделаете, попробуйте обернуться – это может быть у вас за спиной! Вы можете увидеть сценарий в действии здесь. Итак, как работает сценарий? Ну, во-первых, открывается ссылка на Майнкрафт:

В Python важно обращать внимание на отступы, так как именно так код разделяется на блоки. В этом случае обе строки находятся вровень с левым полем: первая строка импортирует библиотеки Minecraft и Time, а вторая создает объект Minecraft, который мы будем использовать повсюду. Следующие 25 строк задают несколько переменных для блоков, которые мы собираемся использовать, чтобы мы могли называть их, скажем, wood_planks, а не по идентификатору блока (в данном случае 5). Затем мы указываем, какой из этих блоков будет использоваться для стен, какой для крыши и так далее. Мы можем легко полностью изменить конструкцию дома, например, заменив кирпичные стены на булыжные. Наконец, мы устанавливаем ширину, длину и высоту нашего желаемого жилища.

Теперь мы вызываем функцию Minecraft mc.player.getTilePos (), чтобы найти игрока в ландшафте, и возвращаемые значения затем используются для создания двух переменных, левой и нижней, чтобы описать, где будет первый угол жилища.

После этого структура скрипта соответствует процессу Майнкрафта ” ручного” строительства дома. Мы начнем с расчистки пространства, чтобы, если игрок решит построить дом внутри, скажем, горы, жилая площадь не была бы сплошной каменной. Вот блок кода – функция в Python, которая делает это:

Когда мы вызываем clear_house, мы передаем параметр nuclear. Он имеет значение True или False. Вы можете попробовать вызвать его с помощью True, чтобы очистить больший объем вокруг целевой области, или вызвать его с помощью False, чтобы ограничить зазор внутренними размерами дома. В Minecraft функция mc.setBlocks используется для создания куба блоков, передавая ему координаты в трех измерениях противоположных углов, за которыми следует тип блока, который вы хотите использовать. В данном случае мы расчищаем пространство, поэтому используем воздух.

Как только мы освободим место, пришло время переходить к строительству. Каждый из этих этапов строительства выполняет свою собственную функцию. В конце сценария вы увидите функцию main (), которая управляет потоком программы, вызывая каждый этап построения по очереди. Разумно называя наши функции и вызывая их из main(), легко понять, что делает программа:

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

Возводим стены

Функция build_walls является сердцем программы. Наиболее эффективным способом создания оболочки дома было бы сложить сплошной куб из кирпичей, а затем использовать clear_house для вырезания интерьера. Однако мы хотим, чтобы дом, казалось, строился сам по себе, поэтому нам нужно размещать блоки по отдельности, один за другим. Вот упрощенная версия кодекса строительства стен:

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

Этап строительства содержится в блоке while – это продолжается до тех пор, пока мы не уложим все блоки. mc.setBlock помещает один блок в указанные координаты, затем увеличивает одну из этих координат в зависимости от направления, в котором мы укладываем. Эффект заключается в том, что блоки укладываются вдоль стены перед поворотом за угол и продолжаются в прямоугольнике до завершения курса.

Окончательная версия кода немного сложнее, добавляя окна на каждую стену. Окна имеют динамический размер, чтобы они были на половину длины стены и располагались по центру. Он также записывает положение двери; он добавляется после того, как стены построены. Курсы управляются с помощью функции build_walls, которая повторяет функцию build_course для каждого курса блоков, пока он не достигнет конечной высоты.

Вы даже можете попробовать построить свой дом в океане или в воздухе – сделайте это, дважды нажав пробел, чтобы взлететь, затем нажмите еще раз, чтобы подняться, прежде чем запускать сценарий. Измените переменные wall_block и roof_block, чтобы увидеть, что произойдет, если вы создадите стены или крышу из золота или лавы. Вы можете добавить свои собственные блоки, ознакомившись с полным списком здесь и добавив соответствующую переменную в скрипт. Более сложные модификации могут включать добавление в конструкцию нескольких этажей, если для переменной высоты задано достаточно большое значение. Например, узнайте, как добавлять башенки, и у вас будут задатки замка Майнкрафт.

Эти настройки могут показаться тривиальными, но я профессионально программирую уже более 20 лет и до сих пор испытываю трепет, когда фрагмент кода работает так, как задумано. Если вы никогда раньше не программировали, я надеюсь, что вы дадите этому ход – и если у вас в доме есть поклонник Minecraft, я предлагаю выпустить их на код и посмотреть, куда это их приведет. Вы найдете ссылки на ресурсы Minecraft Pi по адресу kevpartner.co.uk/programming.

Сохранить статью?
Андроид мафия
Андроид мафия