ВЕРСИЯ ДЛЯ СЛАБОВИДЯЩИХ
Блог онлайн школы Пиксель

Как построить небоскреб в Minecraft на Python?

Привет, друзья! Мы объединили Minecraft обучение и уроки Python для детей в единый курс. Теперь вы можете учиться программировать на Python внутри знакомой игровой среды. Мы будем учиться писать текстовый код, создавать игры онлайн, экспериментировать и вместе исследовать возможности этих программ. 

Сегодня мы расскажем о том, как сделать небоскреб в Minecraft с помощью языка программирования Python.

Инструкции, как скачать Minecraft и Python:
- на Windows
- на MacOS

Итак, мы построим вот такой огромный небоскреб в Майнкрафт на кирпичной платформе. Сам небоскреб будет сделан из железа и стекла, а две боковые колонны — из блоков с изумрудами. При желании вы сможете изменить все материалы в написанном нами коде. Сам небоскреб будет состоять из трех частей, каждая из которых будет пристыковываться друг к другу. Ну что ж, давайте начинать!

Создание файла


Итак, первым делом мы с вами открываем IDLE — среду программирования на языке Python. Далее необходимо создать новый файл (File -> New file) и обязательно его сохранить в папку. Для этого нажимаем File -> Save as, сохраняем в удобное для вас место, к которому вы сможете всегда обратиться.

Файл можно назвать «Небоскреб», так как наша задача — с помощью программного кода построить небоскреб в Minecraft. Ну а теперь мы можем приступить к программированию!

Строим платформу


Для того чтобы создать нашу кирпичную платформу, нам нужно импортировать все необходимые библиотеки:
import mcpi.minecraft as minecraft
import mcpi.block as block

Далее нам необходимо создать переменную mc и присвоить ей канал связи с нашим сервером, на котором и будет происходить строительство небоскреба и платформы:
mc = minecraft.Minecraft.create()

После создания данной переменной нам необходимо, чтобы сервер считывал координаты нашего персонажа, поэтому создадим переменную pos, в которую поместим функцию getTilePos() – определение координат нашего персонажа:
pos = mc.player.getTilePos()

Для строительства создаем три переменные, в которые помещаем координаты строительства:
x =pos.x + 1
y = pos.y
y = pos.z

Приступим к строительству платформы. Для этого будем использовать функцию setBlocks(), которая построит параллелепипед:
mc.setBlocks(x, y, z, x+100, y+2, z+100, block.BRICK_BLOCK.id)

Теперь наша платформа готова!

Строим небоскреб


Приступаем к строительству самого небоскреба. И для того чтобы наш небоскреб строился сразу на кирпичной платформе, мы с вами передвинем немного координаты его строительства. Для этого мы скопируем координаты x, y, z, написанные ранее, и немного их подкорректируем:

x =pos.x + 20
y = pos.y + 3
y = pos.z + 15
Далее нам необходимо сделать цикл, в котором будем строить этажи самого первого корпуса:
for a in range(4):

В цикле прописываем каркас одного этажа:
mc.setBlocks(x, y, z, x+13, y+4, z+7, block.BRICK_BLOCK.id) #Каркас этажа
mc.setBlocks(x, y + 1, z, x+12, y+2, z+6, block.GLASS.id) #Выдавливаем стекла
mc.setBlocks(x, y + 1, z, x, y+2, z, block.DIAMOND_ORE.id) #Колонна из блоком с изумрудами
mc.setBlocks(x + 1, y + 1, z + 1, x+12, y+2, z+6, block.AIR.id) #воздух внутри этажа

Для того чтобы в небоскреб можно было зайти, создаем проходы с улицы в первый корпус и из первого корпуса во второй:
If a == 0:
mc.setBlocks(x + 7, y + 2, z, x+7, y+1, z+7, block.AIR.id)
mc.setBlocks(x + 7, y + 2, z + 7, x+7, y+1, z+7, block.AIR.id)

Чтобы этажи не строились на одном месте, после каждой итерации цикла мы меняем высоту строительства — координату y:
y +=4

Для остальных корпусов мы должны сделать все то же самое, но в них мы не будем делать двери, а также сделаем сами корпуса выше:
for b in range(10):
    mc.setBlocks(x - 6,y - 16, z + 8, x+19, y-10, z+20, block.IRON_BLOCK.id)
    mc.setBlocks(x - 6,y - 15, z + 8, x+18, y-11, z+19, block.GLASS.id)
    mc.setBlocks(x- 6,y - 15, z + 8, x - 6, y-11, z+8, block.DIAMOND_ORE.id)
    mc.setBlocks(x - 5, y - 15, z + 9, x+18, y-11, z+20, block.AIR.id)
    y += 6
for c in range(20):
    mc.setBlocks(x - 16,y - 76, z + 16, x+29, y-9, z+35, block.IRON_BLOCK.id)
    mc.setBlocks(x - 16,y - 75, z + 16, x+28, y-10, z+34, block.GLASS.id)
    mc.setBlocks(x - 15, y - 75, z + 17, x+28, y-10, z+34, block.AIR.id)
    y += 12

Полный код программы


import mcpi.minecraft as minecraft
import mcpi.block as block

mc = minecraft.Minecraft.create()
pos = mc.player.getTilePos()

x = pos.x + 1
y = pos.y
z = pos.z

mc.setBlocks(x,y, z, x+100, y+2, z+100, block.BRICK_BLOCK.id)

x = pos.x + 20
y = pos.y + 3
z = pos.z + 15

for a in range(4):
    mc.setBlocks(x,y, z, x+13, y+4, z+7, block.IRON_BLOCK.id)
    mc.setBlocks(x,y + 1, z, x+12, y+2, z+6, block.GLASS.id)
    mc.setBlocks(x,y + 1, z, x, y+2, z, block.DIAMOND_ORE.id)
    mc.setBlocks(x + 1,y + 1, z + 1, x+12, y+2, z+6, block.AIR.id)
    if    a==0:
        mc.setBlocks(x + 7,y + 2, z, x+7, y+1, z+7, block.AIR.id)
        mc.setBlocks(x + 7,y + 2, z + 7, x+7, y+1, z+7, block.AIR.id)
    y += 4
for b in range(10):
    mc.setBlocks(x - 6,y - 16, z + 8, x+19, y-10, z+20, block.IRON_BLOCK.id)
    mc.setBlocks(x - 6,y - 15, z + 8, x+18, y-11, z+19, block.GLASS.id)
    mc.setBlocks(x- 6,y - 15, z + 8, x - 6, y-11, z+8, block.DIAMOND_ORE.id)
    mc.setBlocks(x - 5, y - 15, z + 9, x+18, y-11, z+20, block.AIR.id)
    y += 6
for c in range(20):
    mc.setBlocks(x - 16,y - 76, z + 16, x+29, y-9, z+35, block.IRON_BLOCK.id)
    mc.setBlocks(x - 16,y - 75, z + 16, x+28, y-10, z+34, block.GLASS.id)
    mc.setBlocks(x - 15, y - 75, z + 17, x+28, y-10, z+34, block.AIR.id)
    y += 12

Чтобы глубже изучить Minecraft программирование, записывайтесь на занятия в школу “Пиксель”. Наш курс включает программирование на Python для детей. Вы научитесь писать текстовый код и создавать свои проекты внутри любимой игровой вселенной. 

Бесплатные видеоуроки Minecraft для детей