Блог онлайн школы Пиксель

Как создать новогоднюю елку в Майнкрафте на Python

Всем привет! Все знают, что главным символом Нового года является наряженная ёлка. Мы подготовили урок, в котором сделаем новогоднюю ёлку в Minecraft с помощью языка программирования Python. Сначала мы сделаем ёлку, а затем нарядим ее в гирлянду, чтобы наша ёлка красиво переливалась в разные цвета.

как построить елку в майнкрафте


Полный код и видеоинструкцию вы можете найти в конце статьи.

Давайте приступим к программированию.

Программирование


Создадим python-файл под названием newYear (в переводе с англ. - Новый год).

как построить новогоднюю елку в майнкрафте

Импортируем необходимые модули для программирования. Нам нужен модуль minecraft, модуль block и time, чтобы останавливать программу на какое-то время. Остановка времени нам пригодится для гирлянды.

В переменную mc поместим команду для программирования в Minecraft. Позицию персонажа поместим в переменную pos. Координаты по трём осям поместим в отдельные переменные: x, y, z. К переменной x прибавим один, чтобы ёлка в будущем появлялась не в персонаже, а на один блок дальше.

Создадим ствол дерева длиной в пять блоков. Ко второму Y мы прибавляем 4, так как отсчет идёт от нуля.


как сделать елку в майнкрафте

как сделать новогоднюю елку в майнкрафте

Теперь напишем строчки кода, чтобы сделать ёлку, но пока без украшений. Их мы добавим чуть позже. На верхушку елки поставим алмазный блок.

большая елка майнкрафт
елка в майнкрафте

елка minecraft

А теперь запустим бесконечный цикл. Создадим три списка: level1, level2, level3. Каждый список наполним блоками в разных порядках, чтобы ёлка красиво и равномерно переливалась цветами. Наряжать ёлку будем в три уровня. Первый уровень — это нижняя часть ёлки, второй — средняя, третий — верхняя, не считая верхушки.

елка майнкрафт постройка

Запустим цикл for, в котором будет останавливаться время на три миллисекунды. Наша задача — нарядить ёлку на первом уровне. Первый уровень будет показывать сначала алмазные блоки, затем — золотые, а потом — железные и так бесконечно.

красивые елки майнкрафт

маленькая елка майнкрафт

Второй уровень начнет светить сначала золотыми блоками, затем — железными, потом — алмазными и так бесконечно.

новогодние украшения майнкрафт

новогодний майнкрафт

Третий уровень начнем с железных блоков, затем пойдут алмазные, а потом золотые и так по кругу.

новогодняя елка майнкрафт


В каждом уровне можно ставить свои блоки, которые больше подойдут по вашему вкусу.

новогодняя елка майнкрафт постройка

красивая елка майнкрафт

С помощью команды time.sleep можно регулировать скорость смены цветов. Чем число меньше, тем скорость смены цветов быстрее. И наоборот: чем число больше, тем скорость смены цветов ниже.

елка майнкрафт новый год

Кладём под ёлку подарочки. Пишите в комментариях, какое желание загадываете на Новый год.

елка майнкрафт карта

Если хотите научиться программировать в Minecraft с помощью языка программирования Python и разрабатывать свои интересные проекты, записывайтесь к нам на продвинутый курс и мы вам всему научим.

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


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

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

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

mc.setBlocks(x, y, z, x, y + 4, z, block.WOOD.id)

mc.setBlocks(x + 1, y + 2, z, x + 3, y + 2, z, block.LEAVES.id) 
mc.setBlocks(x - 1, y + 2, z, x - 3, y + 2, z, block.LEAVES.id) 
mc.setBlocks(x, y + 2, z + 1, x, y + 2, z + 3, block.LEAVES.id) 
mc.setBlocks(x, y + 2, z - 1, x, y + 2, z - 3, block.LEAVES.id) 

mc.setBlock(x + 1, y + 2, z + 1, block.LEAVES.id)
mc.setBlock(x - 1, y + 2, z + 1, block.LEAVES.id)
mc.setBlock(x + 1, y + 2, z - 1, block.LEAVES.id)
mc.setBlock(x - 1, y + 2, z - 1, block.LEAVES.id)

mc.setBlock(x + 1, y + 2, z + 2, block.LEAVES.id)
mc.setBlock(x - 1, y + 2, z + 2, block.LEAVES.id)
mc.setBlock(x + 1, y + 2, z - 2, block.LEAVES.id)
mc.setBlock(x - 1, y + 2, z - 2, block.LEAVES.id)

mc.setBlock(x + 2, y + 2, z + 1, block.LEAVES.id)
mc.setBlock(x - 2, y + 2, z + 1, block.LEAVES.id)
mc.setBlock(x + 2, y + 2, z - 1, block.LEAVES.id)
mc.setBlock(x - 2, y + 2, z - 1, block.LEAVES.id)

mc.setBlocks(x + 1, y + 3, z, x + 2, y + 2, z, block.LEAVES.id) 
mc.setBlocks(x - 1, y + 3, z, x - 2, y + 2, z, block.LEAVES.id) 
mc.setBlocks(x, y + 3, z + 1, x, y + 2, z + 2, block.LEAVES.id) 
mc.setBlocks(x, y + 3, z - 1, x, y + 2, z - 2, block.LEAVES.id) 

mc.setBlock(x + 1, y + 3, z + 1, block.LEAVES.id)
mc.setBlock(x - 1, y + 3, z + 1, block.LEAVES.id)
mc.setBlock(x + 1, y + 3, z - 1, block.LEAVES.id)
mc.setBlock(x - 1, y + 3, z - 1, block.LEAVES.id)

mc.setBlock(x + 1, y + 4, z, block.LEAVES.id)
mc.setBlock(x - 1, y + 4, z, block.LEAVES.id)
mc.setBlock(x, y + 4, z + 1, block.LEAVES.id)
mc.setBlock(x, y + 4, z - 1, block.LEAVES.id)

mc.setBlock(x, y + 5, z, block.DIAMOND_BLOCK.id)

while True:
    

    level1 = [
        block.ICE.id,
        block.SNOW_BLOCK.id,
        block.LAPIS_LAZULI_BLOCK.id
    ]

    level2 = [
        block.SNOW_BLOCK.id,
        block.LAPIS_LAZULI_BLOCK.id,
        block.ICE.id
    ]

    level3 = [
        block.LAPIS_LAZULI_BLOCK.id,
        block.ICE.id,
        block.SNOW_BLOCK.id
    ]

    for i in range(3):
        time.sleep(0.1)
        mc.setBlock(x + 1, y + 2, z + 2, level1[i])
        mc.setBlock(x - 1, y + 2, z + 2, level1[i])
        mc.setBlock(x + 1, y + 2, z - 2, level1[i])
        mc.setBlock(x - 1, y + 2, z - 2, level1[i])
        mc.setBlock(x + 2, y + 2, z + 1, level1[i])
        mc.setBlock(x - 2, y + 2, z + 1, level1[i])
        mc.setBlock(x + 2, y + 2, z - 1, level1[i])
        mc.setBlock(x - 2, y + 2, z - 1, level1[i])
        mc.setBlock(x - 3, y + 2, z, level1[i])
        mc.setBlock(x + 3, y + 2, z, level1[i])
        mc.setBlock(x, y + 2, z - 3, level1[i])
        mc.setBlock(x, y + 2, z + 3, level1[i])

        mc.setBlock(x + 1, y + 3, z + 1, level2[i])
        mc.setBlock(x - 1, y + 3, z + 1, level2[i])
        mc.setBlock(x + 1, y + 3, z - 1, level2[i])
        mc.setBlock(x - 1, y + 3, z - 1, level2[i])
        mc.setBlocks(x + 1, y + 3, z, x + 2, y + 2, z, level2[i]) 
        mc.setBlocks(x - 1, y + 3, z, x - 2, y + 2, z, level2[i]) 
        mc.setBlocks(x, y + 3, z + 1, x, y + 2, z + 2, level2[i]) 
        mc.setBlocks(x, y + 3, z - 1, x, y + 2, z - 2, level2[i]) 

        mc.setBlock(x + 1, y + 4, z, level3[i])
        mc.setBlock(x - 1, y + 4, z, level3[i])
        mc.setBlock(x, y + 4, z + 1, level3[i])
        mc.setBlock(x, y + 4, z - 1, level3[i])

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