Любите играть в Minecraft и хотите научиться создавать моды? Это просто и возможно с помощью языка Python. Предлагаем разобраться, как строить во вселенной «Майнкрафт» на примере создания поезда и его программирования на «Питоне».

Minecraft – игра, популярная среди детей и подростков. Они проводят время в виртуальной вселенной, общаются, а при определенных условиях получают возможность создавать постройки. И хотя изначально игра была написана на языке Java, а после переписана с применением C++, именно «Питон» отлично подходит для начинающих и опытных мододелов. Его синтаксис только кажется сложным: с программированием на Python успешно справляются даже младшие школьники и подростки от 9 до 13 лет и старше.

Сегодня мы хотим доказать это и предложить создать небольшой мод на поезд в игре «Майнкрафт». Урок подготовлен школой программирования для детей Pixel. Давайте приступим к основной части.

Как научиться строить в игре «Майнкрафт»: подробный гайд с кодом на примере создания виртуального поезда

Давайте сделаем неотъемлемый элемент симулятора железной дороги – поезд. Основные шаги представлены далее в виде текстовой инструкции. Если не получится разобраться, посмотрите видео о создании поезда во вселенной «Майнкрафт», которое представлено в конце сегодняшнего обучающего материала.

1. Начало работы: скачиваем софт и импортируем требуемые модули

Если вы новичок, обязательно просмотрите один из роликов, посвященных установке Minecraft и Python на ПК с операционными системами:

Это условный нулевой шаг, то есть подготовка к работе с инструментами, необходимыми для создания сегодняшнего мода. Преподаватель школы Pixel рассказал, как скачать, установить и запустить требуемые программные среды.

Если все готово, давайте приступим.

Первый шаг – импорт модулей minecraft и block из библиотеки mcpi. Они потребуются для взаимодействия с игрой и применения базовых блоков для строительства в игре «Майнкрафт»: с их помощью мы будем создавать постройки.

Вот какой код нам нужен:

Начало работы над скриптом
Начало работы над скриптом
import mcpi.minecraft as minecraft
import mcpi.block as block

2. Создаем подключение к виртуальной вселенной

Для того чтобы создать свой условный мир с поездом, воспользуемся функцией create(). Благодаря этому удастся обращаться к Minecraft и совершать некоторые операции на его сервере. Объявляем действие посредством кода:

Код для поезда в Minecraft
Код для поезда в Minecraft
# Подключение к Minecraft
mc = minecraft.Minecraft.create()

3. Управляем координатами игрока

Для этого нам потребуется функция getTilePos(). Она нужна для определения положения поезда относительно игрока. Пишем:

# Координаты игрока
player_pos = mc.player.getTilePos()

4. Задаем координаты первого вагона, устанавливаем его размеры и добавляем дополнительные вагонетки

Нужно взять координату x игрока, добавить 2. Это позволит строить вагоны справа от персонажа. Координаты y и z не трогаем: в иной ситуации нарушится расположение поезда относительно игрока. Пишем:

# Координаты первого вагона
wagon_x = player_pos.x + 2
wagon_y = player_pos.y
wagon_z = player_pos.z

Чтобы стать на шаг ближе к пониманию того, как построить поезд в игре «Майнкрафт», давайте зададим его размеры. Вот какой код потребуется:

# Размеры вагона
wagon_width = 4
wagon_length = 4
wagon_height = 2

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

# Создание 4 вагонов
for_in range(4):

5. Делаем корпус, колеса и другие детали

Мы почти разобрались, как сделать поезд в игре «Майнкрафт» с помощью модулей block и minecraft, функции create() и дополнительных инструментов. Дело осталось за малым: нужно доработать финальные детали. Это:

  • Корпус;

  • Колеса;

  • Крепления.

Вот код для корпуса:

mc.setBlocks(wagon_x, wagon_y, wagon_z, wagon_x + wagon_width - 1, wagon_y + wagon_height, wagon_z + wagon_length - 1, block.STONE.id)

Теперь применим функцию setBlock(), чтобы сделать колеса. Разместим блоки железа (block.IRON_BLOCK.id) в требуемых координатах. Будем учитывать, что каждый вагон имеет 4 колеса: 2 спереди слева и справа, 2 — сзади с тех же сторон. Вот какой код поможет запрограммировать это условие:

# Создание колес
mc.setBlock(wagon_x, wagon_y, wagon_z - 1, block.IRON_BLOCK.id) # Переднее колесо слева
mc.setBlock(wagon_x + wagon_width - 1, wagon_y, wagon_z - 1, block.IRON_BLOCK.id) # Переднее колесо справа
mc.setBlock(wagon_x, wagon_y, wagon_z + wagon_length, block.IRON_BLOCK.id) # Заднее колесо слева
mc.setBlock(wagon_x + wagon_width - 1, wagon_y, wagon_z + wagon_length, block.IRON_BLOCK.id) # Заднее колесо справа

Теперь проверим, не является ли текущий вагон первым. Если нет, то есть позиция не начальная, можно приступать к созданию креплений. Возьмем блок block.RAIL.id. Код:

# Создание крепления между вагонами
if wagon_x != player_pos.x + 2:
	mc.setBlock(wagon_x - 1, wagon_y, wagon_z + 2, block.RAIL.id)

Завершающийштрих — обновление координаты x для следующего вагона так, чтобы к ней добавлялась ширина текущей вагонетки и дополнительный блок. Код:

# Обновление координат для следующего вагона
wagon_x += wagon_width + 1

Как должен выглядеть финальный скрипт, показано на скрине:

Итак, у нас получилось сделать поезд в игре «Майнкрафт» без разработки сложного мода. Попробуйте запустить программу: 

  1. Кликните на Run.

  2. Выберите Run Module.

  3. Перейдите к Minecraft и нажмите на кнопку возврата к игре. 

Если все получилось, поздравляем!

Бонус: обучающее видео и полный код

Если что-то не получилось, обязательно посмотрите обучающий ролик. В нем преподаватель школы Pixel рассказал, как нужно строить поезд для игры «Майнкрафт» и наглядно показал части кода.

В завершение представим код целиком: он пригодится для самопроверки или в случае, если и видео не поможет.

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

# Подключение к Minecraft
mc = minecraft.Minecraft.create()

# Координаты игрока
player_pos = mc.player.getTilePos()

# Координаты первого вагона
wagon_x = player_pos.x + 2
wagon_y = player_pos.y
wagon_z = player_pos.z

# Размеры вагона
wagon_width = 4
wagon_length = 4
wagon_height = 2

# Создание 4 вагонов
for _ in range(4):

	# Создание корпуса вагона
	mc.setBlocks(wagon_x, wagon_y, wagon_z, wagon_x + wagon_width - 1, wagon_y + wagon_height, wagon_z + wagon_length - 1, block.STONE.id)

	# Создание колес
	mc.setBlock(wagon_x, wagon_y, wagon_z - 1, block.IRON_BLOCK.id) # Переднее колесо слева
	mc.setBlock(wagon_x + wagon_width - 1, wagon_y, wagon_z - 1, block.IRON_BLOCK.id) # Переднее колесо справа
	mc.setBlock(wagon_x, wagon_y, wagon_z + wagon_length, block.IRON_BLOCK.id) # Заднее колесо слева
	mc.setBlock(wagon_x + wagon_width - 1, wagon_y, wagon_z + wagon_length, block.IRON_BLOCK.id) # Заднее колесо справа
 
	# Создание крепления между вагонами
	if wagon_x != player_pos.x + 2:
  	mc.setBlock(wagon_x - 1, wagon_y, wagon_z + 2, block.RAIL.id)

	# Обновление координат для следующего вагона
	wagon_x += wagon_width + 1

 А чтобы узнать, как управлять поездом в игре «Майнкрафт», строить красивые станции, создавать рельсы и виртуальные окружающие объекты — дома, деревья и т. д. — ознакомьтесь с подборкой роликов. Они помогут отточить навыки в написании кода на Python и вывести их как минимум на хороший уровень. 

Также просим поделиться успехами и рассказать, как все прошло. Получилось сделать поезд? Сложной ли показалась инструкция? 

А родителей детей хотим попросить высказать мнение о языке Python: подходит ли он для обучения младших школьников и подростков программированию?


Урок подготовила детская школа программирования Pixel. Мы обучаем программированию на Python детей от 9–10 лет и старше, заглядывайте на наши онлайн-курсы.

Комментарии (14)


  1. alexandertortsev
    24.09.2024 22:07
    +1

    Строить нужно в реальном мире, а не рисовать.


    1. GospodinKolhoznik
      24.09.2024 22:07
      +1

      Зазываете людей идти работать на МетроВагонМаш?


  1. Karroplan
    24.09.2024 22:07
    +3

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


    1. AcckiyGerman
      24.09.2024 22:07

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


      1. randomsimplenumber
        24.09.2024 22:07

        Вызов функции с 10 параметрами это достаточно сложно для взрослых. Я когда такое вижу, у меня кровь из глаз и слезы.


  1. randomsimplenumber
    24.09.2024 22:07

    # Создание корпуса вагона

    mc.setBlock

    # Создание колес

    mc.setBlock

    # Создание крепления между вагонами

    mc.setBlock

    Хорошее API, простое и понятное ;) Я в этих Майнкрафтах не шарю, но колеса должны катиться, крепления - изгибаться, вагоны - не должны ни катиться ни изгибаться. Или это макет поезда из кубиков, и ехать он не должен?


    1. unwrecker
      24.09.2024 22:07
      +1

      Скриншот из видео к статье
      Скриншот из видео к статье

      У вас слишком большие ожидания от поезда в Майнкрафте. Хотя и я представлял его капельку посерьёзней :)


      1. Sasa111222333
        24.09.2024 22:07

        для детей результат вполне приемлемый))


        1. randomsimplenumber
          24.09.2024 22:07

          ну, если детям нравится, приемлемо :)


          1. Sasa111222333
            24.09.2024 22:07

            не буду утверждать, но точно скажу, что мы с моим (9 лет) пока за роблокс и скретч не вылезали. может как-нибудь попробуем и питон. пока нравится именно простота, да и скретч дает возможность увидеть результаты почти мгновенно


  1. voopr
    24.09.2024 22:07

    И хотя изначально игра была написана на языке Java, а после переписана с применением C++

    Нет. Это две одновременно существующие версии.


    1. Sasa111222333
      24.09.2024 22:07

      но ведь по сути же исходную версию переписали. или я чего-то не учитываю? интересно стало


      1. voopr
        24.09.2024 22:07

        Нет, ничего не переписывали. Есть две версии Java Edition и Bedrok Edition (эта как раз написана на плюсах и она под винду и вроде еще для консолей). Обе версии развиваются независимо.


        1. Sasa111222333
          24.09.2024 22:07

          а, спасибо. интересно, будем знать