Публикации сообщества

Андрей Корягин • 28 ноября 2018

python and minecraft

Как говорил Остап Бендер: "Автомобиль это не роскошь, а средство передвижения". Сейчас это можно говорить о владении языками программирования и разработке роботов.

На сегодняшний день стало необходимым условие - знание языка программирования, ведь почти любая профессия так или иначе связана с информационными технологиями и разработкой и настройкой автоматизации.

И в основном приветствуются знания языков программирования высокого уровня: C++, C#, python, java, go, visual basic, java script и многие другие.
Данные языки являются текстовыми.  В основном к ним переходят только к 8 классу - это примерно 14 лет.

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

Кого учить?

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

В результате, отпадает сам собой вопрос "кого учить?". Изучить языки программирования может каждый в независимости от того, какой у него склад ума -  "гуманитарий" или "аналитический". Изучение языков программирования тренирует участки мозга как левого, так и правого полушария.

Если первая проблема - "Кого учить?" решена, то вопрос  "как учить?" и "когда учить?" актуален как всегда.

Я выбираю python

Проблем - пропасть. Все мы знаем, что для детей с 6 лет вводятся такие темы как "алгоритмизация" и "робототехника", где ребята учатся создавать программы с помощью пиктограмм. Сначала это происходит с помощью бумажных  элементов, а затем постепенно переносится на компьютер, где в специальных компьютерных средах дети создают программы, используя те же пиктограммы. Такой "графико-визуальный" язык программирования преследует детей в основном до 11 класса, этому способствует и сама робототехника, а именно  - программа обучения.

По статистике 70% робототехнических наборов занимает lego (wedo, ev3, nxt) - это огромная цифра. Вся родная среда программирования - это работа с иконками-пиктограммами, правда для продвинутого уровня есть возможность использовать более сложную математику и есть уже момент знакомства с понятием класса и функции.

В результате, при переходе из школы в ВУЗ происходит разрыв шаблонов. В первую очередь резкий переход на текстовые языки программирования и уход в область изучения алгоритмов и высшей математики.

Я поставил цель "смягчить" переход между графико-визуальным языком программирования и текстовым и уже на возрастном этапе - 11-12 лет, давать основные виды алгоритмов для решения определённых задач.
Таким "мостиком" стал язык программирования python и среда minecraft.

Язык программирования python на начальном этапе - очень понятный и лёгкий, что позволяет понизить порог вхождения в изучение языков программирования. Мне, как преподавателю, данный язык нравится своей чёткой строгой структурой написания кода. Тут необходимо строго соблюдать положение строк кода, так как это характеристика зависимости элементов кода между собой. 

Minecraft

На сегодняшний день minecraft прочно связался с образованием. Появилась отдельное приложение и одноимённое сообщество minecraft education. Про них в этой статье я не буду писать, но данное направление имеет место быть для решения ряда образовательных задач.

Для изучения языков программирования python и java было разработано ещё одно приложение minecraft pi.
Эта среда в первую очередь разрабатывалась для микрокомпьютеров семейства raspberry pi. Данный minecraft устанавливается по умолчанию с операционной средой для микрокомпьютера и является бесплатным приложением.

Есть специальная локализация для windows и ios.

Для того, чтобы код на python мог интегрироваться в среду minecraft, используются различные локальные сервера. Их множество. 
Один из них это Bukkit 

Подключившись к локальному серверу, мы можем создавать программы на python  и интегрировать их в среду minecraft.

Особенности программирования на python для minecraft

Главная специфика разработки программ для визуализации своего результата в minecraft опирается на пространство координат.
Так как это 3d игра, то все объекты имеют 3 координаты X, Y, Z
И это кладезь в области визуализации:
1. графиков математических функций, как двухмерных, так и трёхмерных.

2. построение фигур стереометрии и планиметрии.

Еще это наглядная демонстрация того, зачем нужна математика со всеми её разделами.
Например:

1. практическая реализация построения фигур с использованием декартовой, полярной и сферической системы координат

2. построение фигур с использованием тригонометрии

3. практическое закрепление понятий, что же такое вектор, матрица (массив), список, логика предикатов.

4. почему используются радианы, а не градусы.

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

Всё это возможно применить и реализовать в среде minecraft с использованием языка python.

Вторая особенность работы в minecraft - это то, что каждый объект состоит из кубиков одинакового размера. Кубик можно воспринимать как пиксель (точка функции). Для примера, представлены некоторые скриншоты применения математики в minecraft.

Пример 1. Парабола

парабола
Правая ветка параболы

Данная парабола была построены с использованием всем известной формулы y =x^2, но с некоторыми поправками.
А именно масштаб и построение.
Код программы :

parabola
Построение параболы

Пример 2 График функции sin() через радианы

Sin()
График sin() в радианах
sin_rad
Построение sin() в радианах


Пример 3 График функции sin () c использованием напрямую с координаты
Как видим, данные показатели градусов были восприняты алгоритмом, как радианы и это наложило отпечаток на построение. 
Получились затухающие колебания sin И cos()

sin2
График sin() в градусах

sin_grad

 

Пример 4. Винтовая линия

Такая же особенность прослеживается, если строить винтовую линию.

спираль Архимеда
Спираль Архимеда

Все эти примеры показывают влияние математики на мир.
Напоследок приведу пример применения цикла и условия для решения логических задач.


Конечно, изучение языка python и его библиотек не заканчивается использованием только среды minecraft
Это начальный уровень входа в достаточно сложную алгоритмику и поэтому подразумевает профессиональность учителя в области математики, программирования (заметьте, не информатики) и физики.

Надеюсь статья была вам полезна. Дерзайте и создавайте свои интересные проекты.

Кол-во комментариев: (7)

Борис Ярмахов
Андрей, большое спасибо за эту тему. Правильно ли я понимаю, что mcpi, которая присутствует в коде программы - это библиотека Питон, позволяющая совершать действия с объектами Майнкрафт?
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Андрей Корягин
    Совершенно верно. Разрабатывалась в первую очередь для микрокомпьютера raspberry pi, поэтому для индефикации подписывают pi. На операционной среде rasbian всё запускается из "коробки". Для windows или ios есть множество вариантов ( какой сработает)
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Борис Ярмахов
    И еще - то, о чем вы пишете - это результат ваших собственных экспериментов или же есть какие-то наблюдения о том, как это используют дети в учебном процессе?
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Андрей Корягин
    Для детей с 8 - 10 лет в данной среде отрабатываем навыки применения в коде условий, циклов, простейших арифметических действий, понятий : функция и класс. Один из таких примеров показан на видео - это как раз для детей такого возраста. Для детей с 11 лет частично применяю задания по построению простых функций - параболы, гиперболы, фигуры , образованные вращением функций и многоугольников, многоугольников, многогранников. Для детей с 14 лет всё тоже самое + тригонометрия и т.д. В зависимости какой ребёнок у меня обучается.
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Андрей Корягин
    Борис Ярмахов это дополнительное образование. В группе не больше 10 чел. Конечно, для рамок школы, когда на занятиях могут присутствовать до 30 человек- это очень сложно. Особенно в плане контроля выполнения задания и помощи. Задача стоит - научить программированию и вывести детей на проектную деятельность.
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Андрей Фадеев
    Может кому интересно, но я использовал школу программирования Пиксель. И цены недорогие, и преподаватели хорошие. Поэтому вот моё субъективное мнение - рекомендую)
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии