Raspberry Pi 2 - устройство на удивление способное, учитывая его цену менее 30 фунтов стерлингов. Он поставляется с предустановленной версией Minecraft, а также с API, который позволяет писать код для запуска в виртуальном мире. Вы делаете это на Python, которому легко научиться. Комбинация Pi, Python и Minecraft дает прекрасную возможность начать изучение возможностей программирования. И острые ощущения от просмотра дома, построенного на виртуальном ландшафте, тоже не только для детей.
как посмотреть оценку поведения dota 2
Скрипты в Майнкрафте
Minecraft - это игра с открытой песочницей, в которой нет сюжетной линии. Его иногда называют виртуальным Lego, поскольку игрок может построить любую структуру, используя блоки, находящиеся в его распоряжении. Версия, поставляемая с Raspberry Pi, имеет ограниченный набор функций, соответствующих ее образовательной роли, поэтому вам не нужно беспокоиться, например, о преследовании зомби. Взаимодействие с этим миром не требует специальной настройки, только последняя сборка Raspbian OS плюс среда программирования. Я бы выбрал Geany, который вы можете установить, открыв LXTerminal и набрав:
sudo apt-get install geany
Давайте начнем с создания сценария для строительства дома перед игроком - но вместо того, чтобы просто ставить его на место, мы собираемся его анимировать. Мы также собираемся встроить различные настраиваемые параметры, которые позволят игроку экспериментировать с разными размерами и материалами. Это также сделает программу модульной, чтобы ее можно было использовать в качестве основы для создания более сложных колодцев.
Чтобы код заработал, загрузите его в Geany, затем запустите Minecraft и создайте новый мир. Нажмите клавишу Tab, чтобы освободить курсор из окна Minecraft, и щелкните значок шестеренки в Geany (или нажмите F5), чтобы запустить скрипт. Вы должны увидеть, как дом волшебным образом собирается сам себя. Если нет, попробуйте развернуться - он может быть позади вас! Вы можете увидеть сценарий в действии здесь . Так как же работает сценарий? Ну, сначала открывается ссылка на Майнкрафт:
импортировать mcpi.minecraft как minecraft, время mc = minecraft.Minecraft.create ()
В Python важно обращать внимание на отступы, поскольку именно так код делится на блоки. В этом случае обе строки находятся на одном уровне с левым полем: первая строка импортирует библиотеки Minecraft и Time, а вторая создает объект Minecraft, который мы можем использовать повсюду. Следующие 25 строк устанавливают несколько переменных для блоков, которые мы собираемся использовать, чтобы мы могли называть их, скажем, wood_planks, а не по их идентификатору блока (в данном случае 5). Затем мы указываем, какие из этих блоков будут использоваться для стен, какие для крыши и так далее. Мы легко можем полностью изменить конструкцию дома, например, поменяв кирпичные стены на брусчатку. Наконец, мы устанавливаем ширину, длину и высоту желаемого жилища.
Теперь мы вызываем функцию Minecraft mc.player.getTilePos (), чтобы найти игрока в ландшафте, и возвращаемые значения затем используются для создания двух переменных, слева и снизу, чтобы описать, где будет находиться первый угол жилища. .
После этого структура скрипта совпадает с процессом строительства дома в Minecraft вручную. Мы начинаем с расчистки пространства, чтобы, если игрок решит построить дом внутри, скажем, горы, жилая зона не будет из твердого камня. Вот блок кода - функция в Python - которая делает это:
def clear_house (ядерный):
если ядерный == Истина:
blast_zone = 20
еще:
blast_zone = 0
mc.setBlocks (left-blast_zone, player_
земля, дно + blast_zone, left + width + blast_
зона, player_ground + height + blast_
зона + 10, длина-дно-blast_zone, air_block)
Когда мы вызываем clear_house, мы передаем параметр ядерный. Имеет значение Истина или Ложь. Вы можете попробовать вызвать его с помощью True, чтобы очистить больший объем вокруг целевой области, или вызвать его с помощью False, чтобы ограничить зазор внутренними размерами дома. В Minecraft функция mc.setBlocks используется для создания куба блоков путем передачи ему трехмерных координат противоположных углов, за которыми следует тип блока, который вы хотите использовать. В этом случае мы очищаем пространство, поэтому используем воздух.
Как только мы расчистили пространство, пора переходить к строительству. Каждый из этих этапов строительства выполняет свою функцию. В конце скрипта вы увидите функцию с именем main (), которая управляет ходом выполнения программы, по очереди вызывая каждую фазу построения. Разумно называя наши функции и вызывая их из main (), легко понять, что делает программа:
def main ():
clear_house (Ложь)
start_pos = [слева, снизу, player_
земля]
build_floor (start_pos)
курс = build_walls (start_pos)
add_door (door_position)
time.sleep (задержка * 10)
build_roof (start_pos, конечно)
Следующая функция, вызываемая в main (), строит пол - для этого используется mc. setBlocks снова, чтобы вырезать фундамент (для художественного эффекта), а затем добавьте куб напольной плитки глубиной в один блок, чтобы создать прочный пол в нашем доме.
как получить удаленные текстовые сообщения с iphone
Строительство стен
Функция build_walls - это сердце программы. Самый эффективный способ создать оболочку дома - это разбить твердый куб из кирпичей, а затем использовать clear_house для вырезания интерьера. Однако мы хотим, чтобы дом строился сам по себе, поэтому нам нужно размещать блоки по отдельности, один за другим. Вот упрощенная версия правил строительства стен:
def build_course (start_pos, direction,
курс):
блоки = 1
current_horiz = start_pos [0]
current_vert = start_pos [1]
если направление == вверх или
направление == вниз:
number_of_blocks = длина
еще:
number_of_blocks = ширина
пока блоки mc.setBlock (current_horiz, player_
земля + курс, current_vert, wall_block)
если направление == вверх:
current_vert- = 1
elif direction == down:
current_vert + = 1
elif direction == right:
current_horiz + = 1
еще:
current_horiz- = 1
блоки = блоки + 1 # перейти к следующему блоку
time.sleep (задержка)
Мы начинаем с сохранения начальной позиции - это будет позиция последнего блока, уложенного из предыдущего ряда блоков. Затем мы указываем, сколько блоков нужно уложить, в зависимости от того, идем ли мы по длине здания или по его ширине.
Фаза построения содержится в блоке while - он продолжается до тех пор, пока мы не уложим все блоки. mc.setBlock помещает один блок в указанные координаты, а затем увеличивает одну из этих координат на единицу в зависимости от направления укладки. Эффект состоит в том, что блоки кладут вдоль стены перед поворотом за угол и продолжают прямоугольник, пока не завершится ряд.
не удается получить почтовое соединение с сервером не удалось
Окончательная версия кода немного сложнее, добавляя окна к каждой стене. Окна имеют динамический размер, поэтому они занимают половину длины стены и располагаются по центру. Он также записывает положение двери; он добавляется после того, как будут построены стены. Курсы контролируются функцией build_walls, которая повторяет функцию build_course для каждого ряда блоков, пока не достигнет конечной высоты.
Вы даже можете попробовать построить свой дом в океане или в воздухе - сделайте это, дважды нажав пробел, чтобы лететь, затем нажмите еще раз, чтобы подняться, прежде чем запускать скрипт. Измените переменные wall_block и roof_block, чтобы увидеть, что произойдет, если вы создадите стены или крышу из золота или, действительно, из лавы. Вы можете добавить свои собственные блоки, просмотрев полный список здесь и добавив связанную переменную в скрипт. Более сложные модификации могут включать добавление в структуру нескольких этажей, если для переменной высоты задано достаточно большое значение. Например, подумайте, как добавить турели, и у вас есть задатки замка Minecraft.
Эти настройки могут показаться банальными, но я профессионально занимаюсь программированием более 20 лет и до сих пор испытываю кайф, когда фрагмент кода работает так, как задумано. Если вы никогда раньше не программировали, я надеюсь, вы попробуете - и если у вас есть поклонник Minecraft в семье, я предлагаю дать им возможность разобраться в коде и посмотреть, куда он их приведет. Вы найдете ссылки на ресурсы Minecraft Pi по адресу kevpartner.co.uk/programming .