От Scratch к BeetleBlocks. Первые шаги в пространство. Медальон с узором

Александр Григорьев

У того, кто слегка освоился в Scratch, и научился создавать простые учебные проекты самостоятельно, либо, пользуясь руководствами (книгаонлайн-магазин), неизбежно возникает вопрос, куда двигаться дальше? Обилие открывшихся возможностей вызывает легкое замешательство. Можно заняться виртуальной робототехникой, моделированием физических процессов в компьютерных играх и во всевозможных машинах Голдберга. Придумывать мультфильмы и делать анимацию учебно-методической направленности. И даже использовать Scratch как инструмент учителя рисования для воспроизведения метода Marcello Barenghi (о результатах моего технологического расследования как-нибудь в другой раз). Если у Вас под рукой есть 3D-принтер (или Fab Lab), предложите детям применить свои навыки для того, чтобы нарисовать какое-то украшение и получить его в виде готового изделия. Скорее всего им понравится эта идея. Сделаем медальон с узором.

Прежде всего следует успокоить тех, кто успел испугаться. Поначалу нам нет никакой нужды выходить во время рисования за пределы плоскости. Будем использовать стандартные команды черепашьей графики «налево», «направо», «вперед». Тем не менее, получившийся объект будет трехмерным телом, и его можно будет распечатать на 3D-принтере.

Для того, чтобы шагнуть в пространство, воспользуемся онлайн-сервисом BeetleBlocks. Нам потребуется доступ в интернет и браузер Google Chrome.
http://beetleblocks.com/

Немного теории. Проект BeetleBlocks базируется на альтернативной реализации языка блочного программирования Scratch, которая теперь называется «Snap!», а раньше имела имя «BYOB» («Build Your Own Blocks»). Звучит не так благозвучно, зато гораздо точнее по смыслу. Особенностью и «Snap!», и BeetleBlocks является возможность с легкостью создавать и использовать новые программные блоки в различных проектах, как индивидуальных, так и групповых. «Все нажитое непосильным трудом» (или часть) можно в любой момент экспортировать в XML-файл, а затем интегрировать в другие свои программы, либо предоставить в пользование окружающим. В Scratch нам пришлось бы создавать проект на основе какого-то шаблона, заготовки. Здесь мы можем импортировать существующие программные блоки в любой момент, в проект любой степени готовности, и столько раз, сколько это требуется. Таким образом, мы получили в руки идеальный инструмент для групповой проектной деятельности и отработки способов организации групповой работы. Каждый «печет» свой собственный «кусок пирога», затем все сводим воедино. Кроме того, это хорошее средство избавить учеников от выполнения той работы, к которой они еще не готовы.

Давайте посмотрим, как все выглядит на практике. На домашней странице BeetleBlocks располагается большая кнопка запуска программной среды. Нажмем на нее. Либо просто наберем в адресной строке браузера Google Chrome.
http://beetleblocks.com/run/

После загрузки сменим используемый язык (кнопка настроек, «Language...»).

Теперь откроем один из примеров, например, «Bracelet» (кнопка меню, «Открыть», «Examples», «Blacelet», «Open»). Видим предупреждение о том, что, если мы не сохранили свои наработки, все будет потеряно. Выбор языка мало изменил ситуацию, хорошо, что хоть что-то переведено. Соглашаемся, нажимаем на кнопку «Да».

Запускаем кнопкой «Старт». BeetleBlocks начинает исполнение загруженной программы, на экране появляется 3D-объект, который можно рассматривать с разных сторон прямо в процессе рисования. Нажатие правой кнопки мыши приводит к параллельному перемещению изображения, левой — к вращению, колесико приближает и удаляет. Кроме того, существуют кнопки «вписать изображение целиком» («Zoom to fit») и «вернуть камеру в стартовую позицию» («Reset camera»). Можно изменять размер демонстрационного окна либо раскрыть его на весь экран.

Для того, чтобы начать рисовать все заново, нажмите на кнопку «равно», потом снова на кнопку «Старт».

Подивились, можно закрыть этот проект, создать свой собственный. Меню, «Новый проект», «Да». Первым делом следует вновь ощутить почву под ногами, вернуть понимание происходящего. В системе BeetleBlocks у нас есть исполнитель — жук, способный вращаться по любой из трех осей (X,Y,Z; «крен», «тангаж», «рыскание»). Чтобы оставаться на плоскости, достаточно ограничиться вращением лишь по оси Z. Восстановим привычные команды управления «налево» и «направо», создадим соответствующие блоки. Потребуется задать параметр «угол». Выбираем категорию «My blocks», нажимаем «Новый блок», даем имя («налево»), «Ок». В появившемся окне редактора блоков видим «шапочку», нажимаем на плюсик, добавляем параметр («угол»).

Создаем пару блоков «налево» и «направо», используя «rotate Z by».

Обратите внимание, в BeetleBlocks и «Snap!», в отличие от Scratch, не обязательно держать определение блоков все время на виду. И это абсолютно правильно, незачем загромождать пространство. Кроме того, если мы знаем, что программный блок производит (какова его функция), нам нет нужды знать (или помнить), какими именно действиями этот результат достигается. В частности, этим отличается декларативная парадигма в программировании от императивной. Может быть, не только в программировании? Мало ли вокруг различных руководящих работников, которые, вместо того, чтобы грамотно формулировать задачи, пытаются контролировать каждый шаг своих подчиненных? Есть для описания этого явления даже специальный термин - микроменеджмент. Давайте учиться поступать иначе.

Создадим первый рисунок в BeetleBlocks. Аналог команды «опустить перо» — «start drawing lines».

Вопрос, где взять блок «квадрат»? Правильно, создать. Конечно, мы могли бы использовать код без оформления команд создания квадрата как отдельного блока. Но с дидактической точки зрения так имеет смысл делать лишь тогда, когда мозг уже натренирован опознавать данный фрагмент кода целиком, как аналог вызова «квадрат». Умение разбивать задачу на составные части и давать им осмысленные названия, это не способ программирования, это способ мышления. И этому следует учить.

Но отвлечемся от высоких материй и вернемся к вопросу создания медальона с узором. Нам надо понять, как обмениваться своими блоками. Мы можем сохранить проект во внутреннем хранилище BeetleBlocks (меню, «Сохранить как»), но не найдем файла на диске. Поможет команда «Download project as». Полученный XML-файл содержит всю информацию о нашем проекте и его можно будет вновь импортировать в BeetleBlocks на любом компьютере. Однако проект полностью заместит собой ранее открытый. Если мы хотим поделиться созданными блоками для использования в другом проекте, следует выбрать команду меню «Download My blocks as». Помечаем галочками все необходимое, получаем XML-файл.

Теперь можем открыть любой новый проект, пустой или наполовину готовый, и импортировать туда необходимое командой меню «Import project or blocks». Импортируйте в свой проект с узором файл «flat_drawing_blocks.xml» из данного архива.

Download
BeetleBlocks-import.zip
Compressed Archive in ZIP Format 1.4 KB

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

Наконец-то мы освоились достаточно, начинаем создавать 3D-модель. Переключим жука в режим «выдавливания» командой «Start extruding lines» (хотя можете попробовать и «Start extruding curves»). Теперь при всех своих перемещениях он оставляет за собой след в виде «колбаски» толщиной в один миллиметр.

Жук, кстати, оказался спрятанным внутри нарисованной им «колбаски». Остались видны лишь привязанные к нему оси координат. Отредактируем блок «квадрат», чтобы можно было менять размер, узор маловат. А лучше, создадим блок «шестиугольник». Осталось добавить подложку в виде медальона. Вы правильно догадались, импортируем в проект файл «medalion.xml». Подбираем подходящий размер для узора и медальона, а также толщину следа.

Готово! Теперь можно сохранить STL-файл командой меню «Download 3D model as» и распечатать получившееся изделие на 3D-принтере.

Напоследок новогоднее творческое задание для Вашего класса к угоду всеобщему увлечению. Будем использовать блок «отрезок». Не надо включать режим «выдавливания», наш жучок остается на виду. Достаточно поменять определение блока «луч», чтобы получился уникальный узор. Помните о том, что везде, где можно, следует избегать нежелательных побочных эффектов. А это значит, что жук после выполнения работы должен оказаться в той же позиции и быть повернутым в том же самом направлении, что перед стартом. Пусть каждый ребенок встретит Новый год с собственной эксклюзивной снежинкой в руках!

P.S. Да, если для работы импортированному блоку не хватает каких-то частностей, Вы знаете, что делать. Просто добавьте необходимые определения. Теперь Вы знакомы со стилем программирования «сверху вниз». Он же психотехнический метод «как если бы».