Что можно делать в scratch
Программирование мини-игры в программе Скретч
На свете существуют множество языков программирования, но программирование для детей проще начинать с программ, которые предполагают создание игровой ситуации с героями или объектами, которые двигаются, меняются или взаимодействуют. К таким программам относятся ПервоЛого и ЛогоМиры, а также программа Скретч (Scratch), бесплатно распространяемая для любой операционной системы. Сайт находится по адресу http://scratch.mit.edu. С января 2019 года разработчики выпустили новую версию 2.0. Она немного отличается от предыдущих версий.
В основе Scratch лежит графический язык программирования. Для того чтобы создать скрипт (программу для каждого объекта) нужно просто совместить графические блоки вместе, перетаскивая готовые блоки из левого поля в поле создания скрипта (программы).
Блоки разбиты на несколько типов:
Блок «Перо» в новой версии надо добавлять из меню «дополнительные блоки».
На уроках информатики учащиеся постепенно знакомятся с командами различных блоков и их использованием. Это позволяет на одном из уроков перейти к реализации проекта по созданию мини-игры.
Во многих компьютерных играх игровое поле представляет собой площадку, разбитую на квадраты (как шахматная доска), и требуется собрать какие-либо предметы – это могут быть яблоки, монеты, звезды или что-то другое. Для краткости будем называть эту игру «Собери» (презентация).
Для создания игры нам необходимо проделать несколько этапов:
1 этап. Создание игрового поля
Для создания игрового поля мы должны войти в меню «Сцена», вкладка «Фоны» и с помощью инструментов для рисования «прямоугольник» и «линия» создать поле 8х8 клеток. (рис. 1). Такого размера вполне достаточно для создания первой игры. При желании можно добавить какой-либо текст (кнопка Т).
Рис. 1. Создание игрового поля.
2 этап. Расстановка игровых объектов
На втором этапе мы расставляем объекты разных видов (рис. 2 и 3). Для этого используем добавление спрайтов из библиотеки. Объекты в нашей игре будут двух видов – те, которые по условию надо собрать (например, яблоки), и те, которые будут являться препятствиями. Количество объектов можно задавать самостоятельно. Рекомендую размер объектов уменьшить до 50.
Рис. 2. Добавление объектов на игровое поле.
Рис. 3. Добавление объектов-препятствий на игровое поле.
3 этап. Программирование «героя»
В качестве героя можно оставить исходного спрайта-котенка под именем «Спрайт1». При желании можно выбрать (назначить) «героем» любого другого. Имя спрайта также можно изменить.
В начале игры наш герой должен встать в исходную точку, которую мы определяем с помощью координат. Поэтому команда должна выглядеть так:
Рис. 4. Задание начальной координаты для спрайта.
При необходимости можно задать и начальное направление – например, «повернуться в направлении 90».
Далее для того, чтобы наш спрайт ходил сразу по клеткам, мы должны запрограммировать кнопки управления его передвижением (стрелки вверх, влево, вправо, вниз), которые удобно расположены на клавиатуре.
Команды для кнопок должны выглядеть следующим образом:
Рис. 5. Программирование управляющих кнопок (стрéлок).
Этап 4. Программирование собираемых объектов
Для того, чтобы любой объект реагировал на прохождение «героя» и мог менять свою форму или исчезать, необходимо, чтобы он совершал небольшое движение. Это можно задать двумя способами:
Рис. 6. Команда для собираемых объектов.
Чтобы объекты можно было «восстановить» в начале игры задаем дополнительную команду:
Рис.7. Команда для «восстановления» объектов.
Эти команды надо задать для каждого собираемого объекта (яблока, монеты или звезды).
Этап 5. Программирование препятствий
На игровом поле должны также присутствовать объекты, которые будут усложнять игру, т.е. являться препятствиями. Чтобы они могли взаимодействовать с героем, когда он попадает на соответствующую клетку, необходимо им также задать небольшое движение (аналогично собираемым объектам).
Взаимодействие с героем можно задавать по-разному: препятствие может «взрываться», «переворачиваться» (т.е. изменить свой костюм), выдавать сообщение «Ты проиграл» или «Здесь ходить нельзя» и т.д. Можно задать команду, которая будет перемещать героя в начало игры, т.е. в исходную точку. Варианты могут придумать сами дети. В начале игры также надо вернуть этим объектам исходный костюм.
Рис. 8, 9. Программирование препятствий.
Этап 6. Программирование кнопки финиш
По желанию можно создать кнопку «Финиш» и поместить ее в конце игрового поля. Кнопка «Финиш» программируется аналогично предыдущим объектам. Отличие будет в тех командах, которые будут выполняться при реакции на прохождение Спрайта. Например, можно задать «Говорить «Ты победил!» или «Переходи на второй уровень» и при этом кнопка может менять цвет или мигать и т.д. Здесь дети могут использовать свою фантазию и желание.
Рис. 10. Изменение кнопки «Финиш».
Рис. 11. Программа для кнопки «Финиш».
Заключение
Подобную игру можно создать за 1 урок или одно занятие. Практика показывает, что подобные задания дети выполняют с удовольствием и могут проявить фантазию или использовать более сложный набор команд для создания подобной игровой ситуации. При этом ученики не замечают, как знакомятся с программированием и таким важным моментом, как отладка программы, которая требует усидчивости, терпения и умения видеть и исправлять ошибки в своей программе.
Scratch действительно относится к группе мультимедийных развивающих сред программирования.
Scratch для «продвинутых»
Клонирование и переменные в Scratch
Моему ученику нравилась игра — «Зомби против растений». И ему было интересно самому запрограммировать её. Давайте вспомним как данная игра работает? С правой стороны у нас есть шеренга растений, которая расстреливает приближающихся зомби.
Есть множество решений данной задачи, но на мой взгляд более элегантное решение — задействовать минимально возможное количество спрайтов, т.е. использовать клонирование.
Как сделать так, чтобы у каждого отдельного клона был собственный уровень жизни? Что выбрать переменные или списки? Сделали попытку использовать списки, но после более детальной проработки поняли, что данная структура данных не помогает решить проблему. У переменных и списков, в Scratch есть 2 типа видимости для каждого типа данных — это «для всех спрайтов» или «только для этого спрайта». Пришлось проверять область видимости. Начали мы с переменных.
Дойдя до рабочего варианта переменной с областью видимостью «только для этого спрайта». В классических языках программирования такой тип видимости называют — локальным или приватным в зависимости от контекста.
Оказывается, что если эта переменная с данной областью видимости используется в клоне, то в клоне создается экземпляр переменной, принадлежащий конкретному клону и который используется для внутренних вычислений/работы клона. В нашем случае, у каждого клона есть своя «жизнь». Если стало интересно, то советую обратиться к справочнику. А вот картинка, которая показывает, как спрайты или клоны работают с переменными разных типов видимости.
Переменная с областью видимости «для всех спрайтов» (рисунок слева) — одна на всех. Кстати, здесь вы можете с детьми посмотреть работу с критическими секциями и что такое гонка за ресурс. А если область видимости переменной — «только для этого спрайта», то у спрайта и у его клонов появляется собственная переменная с тем же именем, с которой они работают (рисунок с права). И клоны не имеют доступа к переменной оригинала и переменной другого клона.
Это стало неожиданным и приятным открытием свойств Scratch для создания подобных алгоритмов.
ВАЖНО: Переменная — это очень мощный инструмент настоящего программиста, поэтому я сразу учу детей правильному именованию переменных, так как этот навык поможет им в проектах разной сложности.
Имена объектов как их идентификаторы
ВАЖНО: все переменные с зоной видимостью «только для этого спрайта».
Данный инструмент для меня стал совсем неожиданным. Давайте начнем с истории о том, как мы с учеником наткнулись на данную особенность языка. Мой ученик решил, создать игру с «искусственным интеллектом». Игра представляет звездные войны на космических кораблях и у игрока есть возможность управлять одним кораблем, в то время как противники гоняются за вами и за друг другом. Чтобы они могли преследовать вас или друг друга, им нужно как-то принимать решение о том, кого преследовать. Данную задачу можно решить в лоб и задать очередность преследования кораблей, но игра потеряет свою интеллектуальность и быстро наскучит. Поэтому ученик решил настроить интеллект таким образом, чтобы корабли с интеллектом преследовали ближайшего противника. Давайте посмотрим, как он начал решать данную задачу.
На мой взгляд хорошее решение для создания быстрого прототипа. Но какие ограничения здесь есть? Первое, усложнение кода по мере добавления новых кораблей. Следовательно, сложность кода повышается и не исключены мутации кода из-за усложнения. Время поиска ошибки и отладки алгоритма будет расти. И конечно, никто не отменял такую прикольную метрику, как старение кода (advance level SW Development). Что же делать? А делать необходимо следующее, нужно сделать обобщеный алгоритм, который будет динамично приспосабливаться к увеличению или уменьшению количества кораблей.
Для данного алгоритма нам и понадобиться свойство языка — имя как идентификатор объекта. Пришло время больших изменений и здесь вы, как учитель, можете рассказать про такое явление как рефакторинг. Это последовательное изменение кода, улучшение его структуры и его оптимизация. А главное, чтобы каждое изменение не ломало работу программы, и объем изменений тоже должен очень аккуратно подобран. Слишком много изменений — плохо, слишком мало — долго. Сформированный навык рефакторинга даст преимущество и эффективность работы программиста. Но для формирования навыка нужно работать головой, а не просто тыкаться. У меня получилось сделать 4 изменения в первоначальной программе и результат не изменился.
Заметьте, что я еще не удалил блоки, а оставил их. Зачем? Потому, что если что-то пойдет не так, мы можем вернуть предыдущий вариант, начав все заново. Но как только я проверю правильность выполнения обновленного скрипта, я сразу же их удалю, чтобы не отвлекаться на них в последующем.
Заметили? Сейчас в блоке «повернуться к …» стоит переменная и эта штука работает. Т.е. мы минимальными усилиями проверили, что данный подход работает. Это просто круто. Теперь мы можем начать писать алгоритмы, которые позволят определять объект преследования ближайшего корабля.
Что нам пригодится? Это из структур данных — это переменные и списки. Из алгоритмов — это нахождение минимального числа (расстояния) в списке. Еще нам необходим алгоритм, который определит имя объекта для преследования по минимальному расстоянию.
Сейчас будет написано много кода. Но для того, чтобы потом не захлебнуться и не запутаться в куче скриптов, нам необходимо использовать еще одну классную функцию, а именно создание собственных блоков. Эта функция очень мощная, но ее редко используют школьники, да и некоторые программисты, а ведь она позволяет создать понятный с первого прочтения алгоритм программы. Кстати, можете почитать про приемы создания понятного кода в книге Мартина Фаулера «Рефакторинг. Улучшение существующего кода»
Как и перед любым масштабным строительством нам необходимо все спланировать. Давайте спланируем в каком порядке будем разрабатывать блоки:
Для того, чтобы создать обобщенный алгоритм нам чем-то нужно пожертвовать, например, оригинальными именами спрайтов, придется их стандартизировать и получим следующий расклад.
И теперь мы готовы описать 1 часть программы. Все пишем для 1-ого корабля. Запускаем отдельно данный скрипт и смотрим результат. Поехали!
Если мы добавим новый корабль, нам нужно изменить в данном алгоритме лишь одну циферку. Клево? Клево!
Погнали дальше. А давайте научим его 2 алгоритму. Смотрим, что получилось. Это сразу конечный результат со вспомогательными функциями.
Ура! Работает. Проверить это можно следующим образом, должен быть обязательно 0 одним из значений в списке расстояний. Если у вас это не так, ищите ошибку.
Едем дальше! Поиск минимального расстояния. Заметили, что расстояние всегда положительно. И всегда будет минимальное число — 0. Ай-я-яй! Вывод — искать минимум, но не ноль. Можете попробовать свои силы и оптимизировать код самостоятельно, чтобы не делать расчет расстояния от корабля 1 до корабля 1 (это не опечатка).
Обучаем спрайт новой функции и получаем.
Не забываем проверять! Для этого можно даже остановить игру и запустить отдельный скрипт.
Мы написали все, что необходимо, теперь главное правильно использовать данные функции.
Если у вас все работает правильно, то вы должны увидеть следующее:
Заметили, что корабль с «искусственным интеллектом» разрывается между разными противниками. Вы можете усовершенствовать программу и усложнить принятие решения. Например, если у преследуемого корабля осталось мало жизни, то он добивает его, а если он нашел, ближе и с еще меньшим здоровьем, то добить сначала слабейшего.
Кстати, в данной программе можно уменьшить количество действий и усовершенствовать алгоритмы. Попробуйте свои силы. Взять данную программу можно здесь.
Подводим итоги
Вот на таких кейсах я узнал, как Scratch дает возможность ученикам быстрее освоить множество реальных техник программирования. На нем можно рассказывать про работу критических секций, про обобщенные алгоритмы, про переменные и их области видимости, про создание собственных блоков и структурирование кода. А также на данном языке можно рассказывать про профессиональные навыки, например, рефакторинг.
Это лишь малая часть инструментария программиста, но она являет очень важной. А в Scratch это объяснить становится чуточку легче.
Мой опыт обучения детей 8-10 лет программированию на Scratch
Давно собирался написать об этом, но, модная болезнь прокрастинация брала вверх…
Знакомство со Scratch
Когда сыну Артёму исполнилось 7 лет и он пошел в школу, мы ему подарили компьютер, чтобы он не отставал от жизни. Несколько месяцев он играл в разные игры, наслаждался, развлекался и т.п. Мне стало немного обидно, что такой дорогой и сложный прибор как компьютер используется только для развлечений, и я решил придумать, как использовать компьютер для обучения. А чему можно научиться на компьютере? Конечно, программированию! Тут я и вбил в «Яндекс» заветную фразу «обучение детей программированию».
Scratch нашёлся не сразу. Помню чувство, которое я испытал при первом запуске программы: «эх, жаль что в моем детстве этого не было». Быстренько пробежав по блокам Scratch, я высоко оценил его возможности. Полчасика потыкал в него и, переключив на русский язык, позвал ребёнка. После показа нескольких блоков, ребёнок попросил меня немного подвинуться, и продолжил самостоятельно. Через полчаса квартиру огласили дикие вопли Кота: «Ого, ребенок сам разобрался со звуками», — подумал я.
Артёму Скретч понравился, несколько месяцев он проводил с ним по несколько часов в день. Проекты вылетали как из пулемёта, их количество приближалось к сотне штук. Интересный момент: ребенок не хотел признавать переменные. Он считал, что можно обойтись и без них, и долгое время обходился. Я говорил ему, что переменные — это важная фишка, но он не верил. Пришлось сочинить ему задание, которое без переменных не решалось. В общем, весь первый класс ребенок игрался со Скретч и пытался рассказывать о нем в школе. Никто не понимал о чем он говорит, и ему стало обидно, что он не может делиться ни с кем своими проектами. Интернет я ему тогда еще не показывал, да и потом, когда показал, он сказал, что хочет общаться с реальными людьми, а не по интернету.
Я стал думать, как решать эту проблему. Первая мысль была такая: установить в классе на нетбуки Scratch, показать его учительнице, пускай на продлёнке дети занимаются. Учительница была не против. Я научил Артёма устанавливать Scratch с флешки; и вот, как-то вечером мы пошли «на дело». Устанавливали мы его на 26 нетбуков около 2 часов, устали от рутинной работы, после чего сын сказал, что не хочет быть системным администратором.
Организация кружка юных программистов на Scratch
К сожалению, во втором классе на группе продлённого дня Scratch так ни разу и не включили… Тогда я стал думать дальше. Это начинало напоминать крокодила Гену, который искал друзей для Чебурашки. В мультфильме друзья появились, когда начали общее дело. Мы тоже решили начать «дело» — организовать кружок Scratch. Ребенок уже ходил на рисование в молодежный клуб, к директору которого я и обратился.
Помещения, конечно же, не было, поэтому нам предложили заниматься в музыкальном классе по воскресеньям, когда там нет занятий. Так-как опыта ведения кружка у меня не было, в целях привлечения максимального количества потенциальных «друзей», занятия сделали бесплатными. Помню подозрительный взгляд директора и вопрос: «А зачем вам это надо?» Не помню, что я там мычал в ответ, но решили попробовать. Осталось набрать народ, для этого были проведены следующие мероприятия:
— объявление на стенде в клубе;
— реклама на местном форуме;
— раздача перед началом уроков в школе рекламы.
Поиск учебной литературы, подходящей для детей начальной школы, ничего не дал. Поскольку не было проектора, то я предварительно распечатал каждому по три листа — блоки скретч с описаниями.
На первое занятие пришли 8 детей 7-10 лет. Разместились, начали устанавливать Скретч — тут очень пригодились навыки Артёма по скоростной установке программы, полученные в школе. Среди пришедших детей одна девочка, у которой папа программист, уже знала как работать в Скретч. Она помогла нам показать ребятам как двигать блоки. Через 15 минут все освоились с интерфейсом и стали делать то, что написано в листочках. Как обычно, на первом уроке раздалось громогласное мяуканье. Но теперь творилось что-то невообразимое, одновременно орали 8 котов! Срочно изучили на ноутбуках кнопку уменьшения громкости. Занятие продолжалось 2 часа, дети были в восторге. Подробнее про восторги можете прочитать у Кодабры. Были пройдены основные блоки, и дети стали требовать игр. Мои объяснения, что надо немного подождать, и изучить ещё несколько блоков и координатную плоскость — не принимались. На совместном совещании с Артёмом было принято решение ускорить процесс обучения, так как все дети попались смышлёные. Изначально я планировал рассказать о координатах примерно на 5 занятии, однако без координат ни мультфильм, ни игру не сделать. Я был приятно удивлен, когда оказалось, что некоторые дети во 2-м классе уже знали, что такое координатная плоскость. Со словами: «мне папа объяснял» — дети сходу начали применять блоки с координатами.
Игру на втором занятии делать не стали, а сделали мультфильм.
Для запуска нажмите на зелёный флаг в центре экрана.
На второе занятие пришли ещё несколько новичков. Я раздал им первый урок, остальные проходили мультфильм. Быстро сделав мультик, начинали его видоизменять. Выбирали других персонажей, писали разные фразы, и все делали вид, что поняли, что такое координаты. Это я заметил через несколько занятий. Многим нравилось делать смешные игры, прикалываться и веселиться, а чтобы я не приставал со скучными объяснениями, говорили, что всё понимают. Не смотря на все мои усилия, некоторые дети координаты так до конца и не поняли. Кстати, те, кто не поняли координаты, через некоторое время кружок побросали. Остался костяк смышлёных учеников. Общая статистика после трёх полугодий обучения примерно следующая: те, кто занимаются всё это время, человек 10, это костяк. Всего ходило на занятия человек 40. Те, кто побросали — посетили примерно по 10 занятий каждый, поняли, что им это не интересно — и ушли.
Надо отметить, что у меня не хватало фантазии придумывать каждую неделю новый урок. В этом мне помогал Артём. Его хватило на два полугодия, а потом я стал придумывать сам. Это очень сложно, и детям нравились не все уроки. Я каждое занятие прошу детей придумать тему следующего занятия, за всё время они помогли мне 3-4 раза. В последнее время, в поисках вдохновения, я часто захожу на сайт scratch.mit.edu, там очень много классных примеров.
По образцу «Кодабры» попытаюсь сформулировать правила обучения.
1. Каждую минуту ребенку должно быть интересно. Если хотя бы одному не интересно, он включает постороннюю игру, или мультик на ноуте, и к нему тянутся остальные. Если ребенок заскучал, ему всегда можно показать новый прикол на Скретч, ведь это очень глубокая и мощная программа.
2. Все предложения детей по усовершенствованию игр — на конец занятия. Есть один мальчик, он не хочет делать по написанному, а сразу начинает генерировать идеи. В результате отходит от плана урока. Понаделает своих скриптов. У него ничего не работает, и он начинает отвлекать меня. А разобраться в чужом коде не всегда просто, даже если его писал 8 летний пацан.
3. Всегда иметь под рукой дополнительные задания. Некоторые дети очень смышлёные, у них сразу всё получается, а занятия длились по 2 астрономических часа. Если ребенок за час все сделает — надо дать ему ещё что-нибудь интересное.
4. Занятия дольше 1 астрономического часа проводить не следует. 40 мин, как в школе — оптимально. Дальше у детей реально ухудшается концентрация и они начинают хулиганить.
5. Берите с собой воду и печеньки. Поощрение печенькой реально работает. Я умилялся, когда это подтвердилось на практике.
Появление книги
В процессе создания уроков я постоянно мониторил интернет в поисках литературы по Scrath. К сожалению, книга уважаемого Евгения Патаракина написана не для начальной школы, а других книг на русском я не нашел. После первого полугодия занятий у меня накопилась куча материалов с уроками, и, совместно с Артёмом, мы решили сделать книгу. Писал и делал скриншоты, конечно, я. От Артёма были все идеи уроков, и пара историй про Котёнка Тесея и летучую мышь Rousettus aegyptiacus (которая, как оказалось, переносит вирус Эбола). Так-как издать книгу дело не дешёвое, было принято решение делать её в электронном формате epub. По этой ссылке можно скачать книги и журналы про Scratch созданные в период с 2013 по 2016гг.
Основные цели написания книги
1. Показать Артёму, что «не боги горшки обжигают», что если на русском языке нет книг по Scratch для самостоятельного изучения детьми младших классов, то это можно исправить;
2. Помочь школьникам начальных классов самостоятельно разобраться со Scratch. Папа с мамой должны только скачать книгу на планшет, а дальше ребенок сам должен делать игры;
3. Помочь другим родителям организовать кружки юных программистов;
4. Найти единомышленников, занимающихся обучением детей Scratch и программированию вообще;
5. Рекламировать Scratch как отличный способ обучения. Максимальная цель — каждый ученик начальной школы должен знать о существовании Scratch. Дальше ребенок сам поймёт — нравится ему это или нет, но подвигать блоки хотя бы раз в жизни он должен.
Результат
1. На книжной ярмарке NonFiction 2013, где мы с Артёмом проводили мастер класс по Scratch, ему дали бэйджик — участник выставки и мы прошли в помещение без очереди, которая была 100 метров. Никогда я не видел ещё такого гордого выражения лица. И, потом, на мастер классе, он сиял уверенностью, и с огромным удовольствием показывал всем ребятишкам Scratch;
2. Книга на данный момент скачана более 4500 раз на русском и 1700 на английском языке. Есть несколько положительных отзывов. Надеюсь, некоторым детям она действительно помогла сделать первые шаги в Scratch;
3. Несколько человек написали что планируют сделать кружки Scratch;
4. Один очень уважаемый человек даже приезжал на наше занятие с дочкой перенимать опыт. Он уже тоже открыл кружок в Москве. В интернете всё больше людей попадаются со схожими интересами;
В процессе написания книги выяснилось, что электронные книги можно продавать. Так как в нашей стране никто покупать электронную книгу не будет, было решено перевести книгу на английский, чтобы протестировать схемы распространения электронных книг.
Заключение
Друзей у Артёма прибавилось. Многие из его класса приходили на кружок, и, хотя и побросали, авторитет ребенка вырос. Несмотря на то, что теперь он переключился на майнкрафт, я иногда спрашиваю у него совета по Scratch.
Очень надеюсь, через несколько лет в начальной школе будет предмет «основы программирования на Scratch».
Вот ещё пример игры, которую сделал Артём.
upd 19.10.2016
Ура!
Наконец-то издан мой учебник по программированию на Scratch!
Scratch для юных программистов.
Оптимизирован для детей 9-10 лет.
Вот кусочек книги
http://ozon-st.cdn.ngenix.net/multimedia/1015649918.pdf
upd 22.09.2017
Проделана большая работа, и вот теперь появился первый в мире учебник по Scratch и Arduino
с комиксами! Называется «Школа капитана Грампа». Специально для тех, кто освоил Scratch и хочет чего-то большего. Достать можно здесь в магазинчике
Эта книга и еще две изданы в издательстве Ridero, и доступны по технологии «Печать по требованию».
По указанным ссылкам можно ознакомится с первыми 20% книг.
Сайт книги «Школа капитана Грампа»
Сайт книги «Scratch для учителей и родителей».
Сайт книги «Знакомьтесь, это Snap! Блочная среда программирования мощнее Scratch»
Кстати, Snap! — это реально мощная вещь. Основным отличием от Scratch являются расширенные возможности по построению собственных блоков, а также списки и функции первого класса. Эти мощные возможности позволяют использовать Snap! не только в начальной школе, но и для обучения старшеклассников и студентов. Мне бы очень хотелось чтобы он широко использовался в нашей стране.
upd 29.11.2017
Издан второй учебник по программированию на Scratch!
upd 18.05.2018
Запускаю с 1 июня 2018 два мощных онлайн курса
1. обучение программированию детей на Scratch
2. обучение программированию школьников в среде Minecraft
подробности на страничке educationforkids.online
upd 20 августа 2018
Вышла новая книга
Scratch и Arduino. 18 игровых проектов для юных программистов микроконтроллеров
www.bhv.ru/books/book.php?id=200704
Есть не во всех магазинах. Заказывайте на сайте scratch4russia.com/store
А также я перевел еще пару итальянских книжек о программировании на Scratch
«Видеоигры на Scratch» и «Анимация на Scratch»
upd 30.06.2020
Приглашаю всех детей на недельные марафоны по программированию в Scratch, Minecraft, Roblox, CoSpaces, Python, Scratch JR, чтобы они могли под присмотром педагога познакомиться с этими языками программирования и бонусом получить навыки работы в Paint, Word, на google диске. codim.online/marafon
upd 09.03.2021
на платформе codim.online уже более 16 курсов по детскому программированию и куча недельных IT марафонов.
Я даже записал курс по Астрономии! Люблю ее с 6 лет, когда нашел на чердаке советский учебник астрономии за 10 класс.
А в 10 лет мне подарили вот эту книгу — зачитал до дыр.