программируем с майнкрафт книга
Книга «Minecraft. Программируй свой мир на Python. 2-е международное издание»
У нас вышло переиздание книги, адресованной мальчикам и девочкам, которые любят играть в Minecraft в возрасте 11–15 лет.
Кому адресована эта книга
Книга адресована мальчикам и девочкам, которые любят играть в Minecraft и хотят научиться программированию, чтобы с помощью новых знаний добиться большего. В целом книги серии «Minecraft. » адресованы читателям в возрасте 11–15 лет, но некоторые приключения в финале могут быть интересны и читателям более старшего возраста. Кроме того, первые главы книги испытали совсем юные любители Minecraft в возрасте от восьми лет.
Возможно, вы уже накопили серьезный игровой опыт, но испытываете досаду от того, сколько времени приходится тратить на создание новых сооружений. Или ищете способы расширить возможности игры дополнительными логическими функциями и функциями автоматизации. Какими бы ни были ваши цели, эта книга станет путеводителем в путешествии по программированию для Minecraft, а каждый искатель приключений знает, что путеводитель — самый ценный груз в рюкзаке. Свой поход вы начнете с простого, например с отправки сообщений в чат Minecraft, затем познакомитесь с основами программирования для Minecraft на языке Python и, наконец, узнаете, как использовать новые навыки для создания собственных игр внутри Minecraft. К концу путешествия вы получите знания и навыки, достаточные, чтобы стать первопроходцем в программировании для Minecraft!
Что вы узнаете
Вы познакомитесь с множеством сторон игры Minecraft и способами влияния на ее поведение с помощью программ на языке Python. Откроете тайну адресации блоков в трехмерном мире с использованием координат. Узнаете, как определять местоположение персонажа, создавать и удалять блоки в Minecraft и как определить, какой блок выбран игроком.
Вы узнаете, как писать программы на языке Python: от самых простых, таких как «Привет, мир Minecraft!», до сложных, взаимодействующих с огромными трехмерными объектами, которые, благодаря новым навыкам программирования на Python, легко штамповать. Вы также узнаете, как настроить и запустить собственный локальный сервер Minecraft на ПК.
Используя бесплатный модуль MinecraftStuff, входящий в состав библиотеки на языке Python, вы сможете создавать двух- и трехмерные объекты из блоков, рисовать линии и многоугольники, а также выводить текст.
Примечание для родителей и учителей
Мы разделили книгу на несколько отдельных приключений, которые можно считать самостоятельными проектами. Каждый из них посвящен одной особенности программирования для Minecraft. Знакомство с языком Python будет протекать постепенно, от простого к сложному. Первые приключения ориентированы исключительно на новичков, а последние охватывают более сложные разделы языка Python и заставляют читателя напрягать свои способности.
В каждом Приключении представлен отдельный практический проект с пошаговыми инструкциями (в которых читатели смогут отмечать выполненные пункты галочками), составленными в стиле, напоминающем стиль комментариев в листингах программ. Подробные описания даны во врезках «Углубляемся в код», которые ученики смогут прочесть позднее, чтобы не отвлекаться от ввода и опробования программ.
Каждое Приключение может потребовать больше чем одного урока, но все они поделены на разделы, которые можно использовать в качестве тем для отдельных уроков или занятий.
Синтаксис языка Python предусматривает оформление листингов программ с отступами слева, для выделения структуры кода — он чувствителен к регистру символов. Юным читателям могут пригодиться советы взрослых по правильному оформлению отступов и регистров символов, которые помогут им избежать ошибок при наборе текстов программ. Все программы можно загрузить со вспомогательного веб-сайта. Поэтому если вдруг в программе всплывут какие-то проблемы, сравните свою версию с нашей и посмотрите, где допустили ошибку.
Изменения, внесенные во второе издание
Во втором издании мы сохранили содержание и тот же легкий стиль повествования и внесли некоторые незначительные улучшения и исправления:
О структуре книги
Каждая глава в книге — отдельное приключение, обучающее новым навыкам и понятиям в процессе программирования и тестирования проектов. Книга организована так, что каждому приключению соответствует самостоятельный проект. Хотя, возможно, кому-то будет проще осваивать их по порядку и знакомиться с новыми понятиями программирования постепенно.
Очень важно, чтобы вы прочли Приключение 1, прежде чем делать что-то еще. Там описано, как загрузить и установить всё, что вам понадобится, и убедиться, что всё работает должным образом. В этом приключении мы перечислим главные шаги, которые придется выполнять в следующих приключениях, и будем напоминать о них на протяжении первых приключений.
Первые три приключения написаны для тех, кто мало знает или вообще ничего не знает о программировании. Мы объясним все термины и понятия по мере встречи с ними. В Приключениях 2, 3 и 4 рассмотрены ключевые элементы любой хорошей игры Minecraft. В их числе: определение событий, происходящих в мире Minecraft; выполнение простых вычислений и создание программ, реагирующих по-разному, например отправляющих сообщения в чат или автоматически создающих блоки. Эти три ключевых понятия — определение, вычисление и реагирование — мы будем использовать на протяжении всей книги для создания больших и захватывающих программ Minecraft.
Приключения 5 и 6 основываются на том, что вы узнали в предыдущих приключениях, и содержат более крупные программы, которые разрабатываются и тестируются поэтапно. В Приключении 5 рассматриваются способы, которые позволяют вносить большие объемы данных из файлов данных, чтобы сохранять и дублировать большие структуры с помощью трехмерной «копировальной машины».
Приключения 6 и 7 знакомят с модулем MinecraftStuff, позволяющим с помощью блоков создавать линии, окружности и другие двумерные фигуры, а также некоторые фантастические трехмерные сферы и пирамиды. Они могут стать основой для строительства гигантских сооружений, создать которые вручную очень сложно. В Приключении 7 показано, как наделить движущиеся объекты индивидуальными особенностями, чтобы сделать их движения более-менее разумными. Освоив эти приемы, вы сможете писать захватывающие «игры внутри игры», которые наверняка поразят ваших друзей.
Отрывок. Вторжение инопланетян
Инопланетяне планируют вторгнуться в мир Minecraft. Космический корабль пикирует сверху прямо на персонажа, который находится в смертельной опасности: инопланетяне настроены враждебно и не успокоятся, пока не добьются своего.
В следующей программе вы будете использовать MinecraftShape и приемы программирования, уже использовавшиеся при создании блокфренда, для строительства инопланетного космического корабля (рис. 7.5), который будет парить в воздухе, преследуя персонажа и пытаясь оказаться над ним. Когда это произойдет, он телепортирует персонажа внутрь.
Космический корабль создается с помощью MinecraftShape, как деревянный конь в предыдущей программе; каждый его блок будет иметь свои относительные координаты и тип. На рис. 7.6 показаны координаты блоков (если смотреть сбоку и сверху).
Урок № 3. Программируем с Майнкрафт (постройки и циклы)
В третьем уроке программируем с Майнкрафт настоящий дом. Вы наверняка уже освоились в творческом режиме игры Minecraft. Попробуем написать усложненный код, который в каждом последующем уроке будем менять и постараемся из простого дома сделать шедевр! Данный цикл рассчитан на 3 — 4 занятия по программированию в Майнкрафт и позволит в полной мере освоить логику построения циклов от простого к сложному.
Не забывайте передать черепахе строительные блоки. Вначале переносим их к себе в инвентарь, а потом передаем черепашке!
Чтобы набрать сразу несколько блоков нажимаем на блоке требуемое количество раз левой клавишей мышки!
Программируем команды в Майнкрафт
Первым делом программируем для черепахи команду поднятия вверх — строительные блоки будем ставить под персонажем. Далее предлагаю написать часть кода простыми операторами. Оставьте сверху 1 — 2 строчки про запас! Используем команду вперед и размещаем блок под объектом второй командой. Обратите внимание, что при перетаскивание и размещении строительного блока выпадет дополнительное меню выбора. Нужно выбрать блок со стрелкой вниз. Кнопки и команды, которые мы программируем в майнкрафт с описанием и названием смотрите в материале: Описание команд в Майнкрафт (материал в стадии подготовки).
Вводим в программный код команду цикл: REP … DO …END. Между REP и DO устанавливаем количество повторов = 2 (попробуй поставить 3 и посмотри что получится), условие прописываем как на картинке ниже. Программируем команды для последней стены дома. Добавляем еще один цикл — он будет отвечать за количество слоев (этажей) и разместится на первой строке кода, закрываем цикл командой END в конце программы. Давайте возведем 5 этажей и поэтому пропише 5 повторений подряд.
ДОМАШНЕЕ ЗАДАНИЕ:
Подумай над тем, как построить периметр дома с минимальным использованием простых команд! Может переписать цикл или создать еще один?
Обрати внимание на отличие в количестве простых операторов кода постройки дома на первом и втором рисунках! Почему так сделано?
Запускаем код для исполнения
Программируем черепаху и запускаем ее на выполнение кода. Должно получиться высокое здание без окон и дверей и даже без крыше. Хорошей чертой Майнкрафта является наглядность! Приятно смотреть как все строиться, а когда допускаешь ошибку, то она в прямом смысле слова бросается в глаза.
Первая часть урока по программированию в Майнкрафт подошла к завершению. На следующих занятиях будем улучшать примитивное строение:
Увлекательное программирование: изучаем Minecraft
Добрый день, уважаемые читатели!
У нас выходит второй тираж замечательной книги об игровом мире Minecraft. Мы уже публиковали о ней отдельный пост.
С удовольствием напоминаем, что этой игре все возрасты покорны, более того — она будет интересна даже дошколятам, если правильно подать смысл этой замечательной игры и пробудить в детях творческую жилку. Под катом — рассказ многодетной мамы о том, как это делается.
Наконец, если вас заинтересует перевод ознакомительной публикации Уолтера Хиггса о ScriptCraft, на которую ссылается автор в самом конце статьи — пишите, обсудим 🙂
Если у вас, как и у меня, есть маленькие дети в возрасте 5-10 лет, то вы, вероятно, не понаслышке знаете о всеобщем увлечении Minecraft; возможно, у вас даже есть книги и игрушки на эту тему. Я стала размышлять, может ли эта игра в кубики чему-то научить ваших детей и решила рассказать, как увлечь детей программированием за игрой в Minecraft. Мы уже пытались учиться программировать на Scratch, но Minecraft нравится детям даже больше, чем этот язык. Вот я и решила отталкиваться от Minecraft.
Как раз этим делом я решила не заниматься с детьми. Они маленькие, и я хотела сделать так, чтобы мы могли сосредоточиться на «самом интересном», чтобы дети сразу получали «отдачу» от программирования, а не занимались скучной настройкой прежде, чем смогут приступить к программированию. Хорошо, что я поступила именно так: при установке обнаружились некоторые закавыки, которые вполне могли бы испортить детям настроение. Кстати, мы работали на Mac.
Необходимо усвоить: если от вас требуется «запустить сервер», то имеется в виду следующее:
Если все сработает верно, то вы должны увидеть следующее:
Обратите внимание: если вы правильно установили плагин ScriptCraft, то также должны увидеть «Found 1 plugin».
Статус завершается приглашением командной строки для рабочего сервера. Чтобы аккуратно выйти с сервера, когда все сделаете, вернитесь в терминал и просто введите «stop». Если этого не сделать и закрыть окно терминала, либо нажать Ctrl-Z, то соответствующий процесс Java так и будет висеть на том порте, где был запущен CanaryMod – по умолчанию 25565. В таком случае у вас возникнут проблемы, как только вы попытаетесь вновь запустить сервер.
Навигация в Minecraft
Если вы не играете в Minecraft регулярно (не то, что я), то убедитесь, что умеете пользоваться навигацией в игре.
Единственный вопрос, ответ на который я не нашла в онлайновых руководствах и при простом поиске в Google – как открыть дверь, не разрушая ее. В итоге я приспособилась прокладывать путь при помощи Ctrl + click. Тогда можно не сносить красивые дверцы домиков и других строений :). Странно, что дети предпочитали везде вламываться, не щадя дверей. Хмммм…
Впервые запустив клиент Minecraft, настройте многопользовательский режим (multiplayer). В руководствах пишут, что для соединения используется просто «localhost», но на самом деле нужно задать
localhost:, где port – либо порт, задаваемый по умолчанию для CanaryMod, то есть, 25565, либо другой порт, который вы могли определить в конфигурационном файле CanaryMod.
Затем попробуйте ввести какой-нибудь текст в командную строку. Обратите внимание: командная строка есть как в самом клиенте Minecraft, так и в том окне терминала, из которого вы запускали сервер CanaryMod. Иногда кажется, что клиент реагирует не на все нажатия клавиш. Мой старший любит в таком случае говорить «что-то глючит». В таком случае нужно перезапустить клиент Minecraft, а иногда даже сервер CanaryMod.
Если вы не хотите отвлекаться на всяких монстров и тварей, пытающихся сожрать вашего персонажа, сразу установите такой игровой режим, чтобы можно было творить. Это можно сделать как в конфигурационном файле config file, так и в командной строке Minecraft, где нужно ввести: /gamemode c
. В таком случае вы с детьми сможете вплотную заняться программированием и игрой, а не спасением вашего персонажа.
Сначала давайте убедимся, что ScriptCraft работает:
Начинаем с упражнения, в котором учимся программно создавать блоки, для этого применяется вызов длиной в одну строку:
Получился дубовый ящик с id 5, у которого задана ширина, глубина и высота. Он возник в воздухе, поскольку мы начали с той точки, в которой был крестик-прицел.
Дети сразу заинтересовались, а можем ли мы создать тут животных, например, коров или лошадок:
/jsp spawn cow
/jsp spawn horse
Эти вызовы отличаются от тех, что мы делали при создании блоков: перед ними ставится /js, а не /jsp. Помните команду «op»? Она позволяет делать при помощи /js мощные вызовы, которые не следует предоставлять в распоряжение всем игрокам.
Если в игровом мире начинает идти дождь или становится темно, можете показать ребенку следующие быстрые команды, позволяющие вернуть погожий солнечный день:
Демо-версия для родителей
Мне не без труда удалось уговорить детей оторваться от игры в Minecraft и выполнить несколько простых упражнений – чтобы увлечь их программированием. Для этого вам потребуется внимательно посмотреть, чем дети занимаются в Minecraft, и подсказать им, какие вещи можно сделать гораздо быстрее, написав всего пару строк кода. Вот несколько рекомендаций на этот счет:
Покажите, как создать цилиндр из тортов (cake blocks) при помощи функции цилиндра, принимающей id торта, радиус и высоту. Моя старшая дочь была в полном восторге от того, что в этом квадратном мире можно сделать цилиндры, причем из торта (id 92). Она переключилась в режим выживания командой game mode s
и с аппетитом «поедала» тортики, в Minecraft от этого улучшается здоровье. Ах, если бы в жизни тоже так было 🙂
/js cylinder(92, 5, 20)
Вот что получилось (вид сверху):
Создаем домик, потом набор домиков, форт и замок. Не забывайте двигать крестик, чтобы все эти объекты не выстраивались друг на друге.
/js cottage()
Затем покажите, как замостить одну из этих структур слизнями. Дети подсказали, что если мы так сделаем, то наш персонаж сможет весело летать в облаках и приземляться в виртуальном домике-батуте. Блоки-слизни упоминаются в gamepedia, их id 165.
Можно даже добавить в одном из строений танцпол:
Освободите большое пространство, чтобы на нем было проще размещать разные структуры. На первый взгляд было неочевидно, как это делается, даже покопавшись на различных сайтах я не нашла четкого ответа – разве что такая возможность была в популярном моде WorldEdit. Я не решилась устанавливать малознакомый мод, но в итоге нашла кое-какой код в папке с плагином ScriptCrafts, где используются воздушные блоки. Точно, воздушные блоки! Итак, поехали:
/js box(blocks.air, 50, 50, 50)
Так можно очистить большое пространство, но на это потребуется до минуты времени, поэтому запаситесь терпением. Дети были в восхищении. Но если в этой области у вас имеются высокие деревья или горы, то их верхушки могут остаться «плавать» в воздухе. В таком случае просто еще раз примените код или поднимите эту область и переставьте крестик. Наконец, мы могли просто настроить на сервере плоский мир и для начала поэкспериментировать с ним, но тогда играть было бы менее интересно. Учтите: если задавать для этих размерностей величины 50 и более, то можно запросто обвалить сервер.
Итак, мне удалось основательно увлечь детей, они стали спрашивать, а что еще тут можно сделать. Если вы тоже заинтересовались – самое время познакомиться с другими вызовами и даже попробовать создать собственный мод.
Программируем с Minecraft. Создай свой мир с помощью Python
Те, кто искали эту книгу – читают
Эта и ещё 2 книги за 299 ₽
Отзывы 8
Мне понравилось всё очень легко, понятно и очень быстро с помощью Minecraft можно дочитать конца быстрее чем в других книжках и вам советую
Мне понравилось всё очень легко, понятно и очень быстро с помощью Minecraft можно дочитать конца быстрее чем в других книжках и вам советую
Очень доступно описаны сложные вещи в программировании, подход игровой, как раз для подростков, которые хотят создать свою игру. Только лучше книжный вариант, а не электронный
Очень доступно описаны сложные вещи в программировании, подход игровой, как раз для подростков, которые хотят создать свою игру. Только лучше книжный вариант, а не электронный
Сложно дать однозначную оценку! Но одно я могу сказать точно – эта книга и упражнения из нее, заставляют экспериментировать с кодом, что безусловно благотворно отражается на углубление в фундаментальные знания основ программирования. Спасибо автору за работу которую он проделал в направлении облегчения процесса изучения рутинной информации.
Сложно дать однозначную оценку! Но одно я могу сказать точно – эта книга и упражнения из нее, заставляют экспериментировать с кодом, что безусловно благотворно отражается на углубление в фундаментальные знания основ программирования. Спасибо автору за работу которую он проделал в направлении облегчения процесса изучения рутинной информации.
Хочется попридираться (я не программист по основной профессии, увлекаюсь программированием, чтобы ребенку помочь с азами). Странно, что автор – программист и преподаватель(!), а такие недочеты в книге допустил. Вдвойне странно, что научный редактор с нашей стороны это пропустил. Видимо, просто прочитал, не пробовал что-то сделать по книге. И совсем странно, что уважаемое издательство выпустило книгу такого низкого научного уровня, если так можно сказать.
Вот такие недочеты есть в книге:
1. Не описано, что модуль MCPI (функциями которого пользуются во всей книге и называют почему-то MinecraftPythonAPI) надо устанавливать отдельно, т.к. он не входит в дистрибутив Python по умолчанию. Да, описана установка MinecraftPythonAPI, но не расшифровано, что это такое. Кстати, этот модуль обновляется его разработчиком, и можно найти более новую версию, что не указано в книге!
1.1. Можно было бы более явно указать, что важно первым установить Python, а затем MinecraftPythonAPI, а не оставлять незаметный комментарий про ошибку.
2. Не описано, что будет работать ТОЛЬКО при наличии отдельного сервера (т.е. если в Single Player открыть мир для сети, то нельзя ничего из книги сделать), а этот сервер обязательно должен поддерживать плагины. И должен быть установлен обязательно плагин RaspberryJuice. Этот плагин то же является «кусочком» MinecraftPythonAPI, причем важным, т.к. без него модуль MCPI бесполезен. Плагин так же обновляется его разработчиком и можно скачать более новую версию. Как и сам сервер. Не обязательно пользоваться именно тем сервером, которым пользуется автор.
3. В разделе про функции не сказано, как задавать значения по умолчанию для аргументов, зато упомянуты какие-то скрытые аргументы, а что это такое, не раскрыто (информация скрыта =)). Если автор уж начал про функции рассказывать, то базовое (по умолчанию) надо было бы уж дорассказать.
4. Зачем в этой книге упоминается рефакторинг кода?
5. Совершенно глупое объяснение, почему у первого элемента массива индекс 0 (потому что раньше компьютеры были очень медленными, представляете. если кому интересно – это смещение от 1го элемента массива).
6. И еще несколько технических нюансов, которые автор как-то расплывчато очень по-своему объясняет, что вызывает дополнительные вопросы.
7. Нет ссылки на описание всех возможностей MCPI (ой, простите, MinecraftPythonAPI). А их гораздо больше, чем описано в книге!
8. Список блоков Майнкрафта в приложении приведен очень неудобно – по алфавиту, но при этом блоки названы очень неудачно, например: Зеленое стекло и Розовое стекло очень сильно разнесены между собой, очень тяжело искать, если не знаешь, какого цвета (состояния) бывает блок.