Сегодня мы расскажем о том, как сделать небоскреб в 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 для детей. Вы научитесь писать текстовый код и создавать свои проекты внутри любимой игровой вселенной.