Современные дети и подростки любят играть в Майнкрафт: они проводят часы за компьютером, исследуя виртуальную вселенную. Гейминг здесь – одна из основ формирования неподдельного интереса к программированию, поэтому предлагаем использовать это увлечение для погружения ребенка в написание кода. Как? С помощью создания комнаты испытаний в Майнкрафте.
Мы в школе Pixel считаем, что увлечение детей компьютерными играми – не что-то бесполезное, а полноценная основа обучения программированию. На примере Minecraft и языка Python это проще, чем кажется: возможность создания собственных модов для популярной игровой вселенной – мощный стимул и мотив.
Отметим геймификацию, которая и делает обучение интересным. Данный принцип мы заложили во многие платные онлайн-курсы, в том числе в программу обучения языку «Питон» в виде написания кода для Майнкрафта, но сегодня не об этом.
Хотим предложить бесплатное занятие в виде инструкции, знакомство с которой поможет разобраться в строительстве в Minecraft и других деталях на примере создания игры-страшилки «Комната испытаний». Если будет сложно, посмотрите обучающее видео: его мы разместили в конце.
А теперь давайте приступать.
Бесплатный урок создания модов в Minecraft на Python на примере проекта «Комната испытаний»
Начнем с теории: наш проект – почти хоррор, ведь задача игрока – выбраться из комнаты, где потолок медленно опускается вниз. При этом мы усложним игру и сделаем так, чтобы было необходимо собрать требуемое количество алмазных блоков, прыгая на них. Скорость – залог выживания: если потолок в помещении коснется персонажа, игрок проиграет. А еще предлагаем дополнительно усложнить игру и создать огонь, прикосновение к которому будет приводить к проигрышу.
Вводная часть: скачиваем и устанавливаем необходимые программы
Мы предусмотрели два вводных видео, в которых показано, как установить Майнкрафт и Python на ПК с операционными системами:
Преподаватель школы Pixel рассказал, что и где нужно скачать и как запустить программы. В конце каждого видео показана среда IDLE: запомните ее, потому что код мы будем писать именно там.
Загружаем базовые элементы: основы создания карты комнаты испытаний в Майнкрафте
Давайте создадим Python-файл и назовем его Scary Room (страшная комната). Дальнейшие шаги следующие:
Импорт библиотек и модулей. Это minecraft, block, time и minecraftstuff.
Создание переменной mc. Она будет предназначена для хранения команды, выполнение которой приводит к подключению языка «Питон» к виртуальному миру Minecraft.
Объявление переменной mcdrawing. Ее потребуется приравнять к функции MinecraftDrawing из уже подключенного модуля minecraftstuff. Атрибутом сделаем mc. Теперь каждый раз, когда мы будем обращаться к объявленной переменной, можно добавлять новые фигуры в игру.
Введение переменной resp. Ее мы будем использовать для хранения сведений о позиции персонажа. Дополнительно введем переменные p и s: первая будет содержать id алмазного блока, вторая – размеры условного дома, то есть комнаты. Все стороны зададим на уровне 15 единиц.
Создание переменной game. Ей мы присвоим значение True.
Так, в основах разобрались. Двигаемся дальше.
Создаем комнату испытаний в Minecraft
Вот что будем делать дальше:
Создадим бесконечный цикл.
Объявим новую переменную, где будут храниться жизни персонажа.
Построим комнату со стенами и алмазными блоками.
Последний пункт особенно интересен, поэтому предлагаем рассмотреть его подробно. Нам нужно:
Расчистить пространство для создания комнаты.
Применить функцию setBlocks. Она принимает 7 аргументов: первые 3 – базовая точка, еще столько же – дополнительная. Пространство между ними нужно заполнить блоками. Их id мы укажем в седьмом аргументе.
Создать большой куб из каменного кирпича. Он должен располагаться на расстоянии трех блоков от игрока. Пространство внутри мы заполним воздухом, а пол сделаем из дерева.
Создать стены из кирпича и добавить алмазные блоки. Их разместим на полу, в седьмой аргумент поместим переменную p с требуемым id.
Дорабатываем детали, прописываем условия игры «Страшная комната» в Майнкрафте
Следующие шаги, необходимые для выполнения сегодняшнего проекта, такие:
Введение функции setTilePos. Она нужна для переноса игрока в комнату.
Применение функции posToChat. В нашем случае она будет использоваться для вывода сообщений в чат.
Остановка игры с помощью sleep. Функция находится в модуле time.
Программирование вывода правил в чат. Дополнительно потребуется остановить игру еще на 10 секунд. Они нужны, чтобы потенциальный игрок успел изучить правила. Дополнительно давайте настроим вывод пожелания удачи.
Вот как будем двигаться дальше:
Создадим переменную h. Она пригодится для хранения высоты потолка в нашей комнате. Его мы выполним из светящегося камня.
Объявим переменные mission и power. Первой присвоим значение True, вторую будем использовать для хранения очков. Сначала возьмем 0. Также введем переменную timer2: она сделает опускание потолка постепенным.
Напишем цикл while mission. Он будет бесконечным и связанным с активной миссией. Дополнительно введем переменную timer и присвоим ей значение 1.
Теперь нам нужно реализовать цикл, который будет использоваться для подсчета очков. Для этого:
Поместим текущую позицию игрока в pos.
Сохраним в b блок, находящийся под ногами игрока.
Создадим и проверим условия. Нам нужно, чтобы переменная power увеличивалась на 1, когда персонаж стоит на алмазном блоке; дополнительно необходимо, чтобы в чат выводилось сообщение о количестве набранных очков. После сбора алмаз должен исчезать и становиться воздушным блоком, а переменная timer – нулевой. При этом за пределами условной конструкции нужно вычитать единицу из текущего значения данной переменной и увеличивать timer2.
Финальные штрихи
Мы знаем, как сделать комнату в Майнкрафте, но до выполнения сегодняшнего проекта пока далеко. Давайте:
Напишем ряд проверок. Речь о новом условии. Так, если 10 блоков из алмаза собраны, а power имеет соответствующее значение, то должен появляться выход.
Изменим функцию setBlocks. При выполнении отмеченного условия она должна создавать два пустых блока в стене и выводить сообщение об открытии входа. Переменная power в этом случае обнуляется.
Создадим условие опускания потолка. H должна уменьшаться на единицу.
Запрограммируем setBlocks так, чтобы она заполняла пространство сверху светящимся камнем. Это нужно, чтобы комната постепенно уменьшалась.
Теперь запрограммируем пожар. Для этого:
Установим появление огня в случае, если timer2 содержит значение на уровне 40.
Напишем скрипт для уменьшения количества жизней при условии соприкосновения персонажа с пожаром.
Создадим добавление препятствия в виде линии из листьев при timer2 со значением 60. Поможет функция drawLine.
Также установим еще одно условие: если жизни игрока закончились, mission получает значение false. В чат будет выводиться сообщение с информацией о завершении игры. При этом сделаем так, чтобы процесс остановился на 0,5 секунды и запустился вновь.
Теперь нам нужно создать еще одно условие проигрыша – соприкосновение светящегося камня с головой персонажа. Дополнительно запрограммируем следующее: выход игрока из комнаты приводит к тому, что game и mission обретают значения false, в чат выводится сообщение о выигрыше и комната исчезает.
Бонус: код целиком и обучающее видео
Мы разобрались, как построить комнату в Майнкрафте и сделать из нее полноценный игровой проект. Очень надеемся, что все получилось!
Ниже представлены структура и все строки кода целиком.
А вот видеоурок Minecraft для детей. В ролике преподаватель школы Pixel рассказал, как выполнить проект «Комната страха» с помощью языка «Питон».
Хотим подвести итог и отметить, что обучать детей программированию – не столько перспективно, сколько полезно. Занятия учат детей мыслить логически, воспитывают их внимательность и приближают к IT. И не важно, как проходит обучение: самостоятельно или на курсах.
Материал подготовлен школой Pixel. Мы учим детей 5–17 лет использовать различные IT-инструменты и писать код, создавать сайты, игры и трехмерные модели, компьютерную графику, а также раскрывать собственный потенциал в мире информационных технологий. Заглядывайте на наш курс по Minecraft и Python для детей 9-13 лет.
Комментарии (4)
AllSoliton
06.10.2024 19:25+4Скрытый текст
Импорт библиотек и модулей. Это minecraft, block, time и minecraftstuff.
Создание переменной mc. Она будет предназначена для хранения команды, выполнение которой приводит к подключению языка «Питон» к виртуальному миру Minecraft.
Объявление переменной mcdrawing. Ее потребуется приравнять к функции MinecraftDrawing из уже подключенного модуля minecraftstuff. Атрибутом сделаем mc. Теперь каждый раз, когда мы будем обращаться к объявленной переменной, можно добавлять новые фигуры в игру.
Введение переменной resp. Ее мы будем использовать для хранения сведений о позиции персонажа. Дополнительно введем переменные p и s: первая будет содержать id алмазного блока, вторая – размеры условного дома, то есть комнаты. Все стороны зададим на уровне 15 единиц.
Создание переменной game. Ей мы присвоим значение True.
Так, в основах разобрались. Двигаемся дальше.
Совершенно непонятна целевая аудитория вот этого вот безобразия.
Если это для преподавателя - лучше уж представить общую концепцию, хорошую документацию и способ донести всё это до ребёнка как следует.
Если это для ребёнка 9-13 лет... Ну вы для начала покажите вот этот вот текст (или видео) взрослому человеку, который не понимает в программировании, а потом спросите, много ли он для себя смог вынести из всего этого. Единственное, что можно таким образом объяснить ребёнку - что программирование всегда представляет собой непонятную и сложную штуку минимум на 100 строк странного текста, и единственный способ работать с ним - это просто скопировать. Максимум - изменить ID блока.
Может быть, конечно, это уже туториал для продвинутых детей, которые научились всему этому на предыдущих уроках... нет, предыдущие уроки, судя по тексту, включают в себя установку Minecraft и Python.
В общем, на мой взгляд, это классический пример "как не надо учить". Ни детей, ни взрослых.MaxKitsch
06.10.2024 19:25+2А тут идеи «учить» и нет. Это просто аттракцион, имитирующий обучение, как и все остальные «школы» и «академии» такого плана.
SquareRootOfZero
Картинки с примерами кода хорошо бы в формате jpeg перезалить.