Автор: Репина Елена Александровна
Должность: педагог дополнительного образования
Учебное заведение: МБ УДО "Станция юных техников" город Симферополь
Населённый пункт: Симферополь
Наименование материала: программирование на языке Scratch
Тема: Среда программирования Scratch и её роль в дополнительном образовании
СРЕДА ПРОГРАММИРОВАНИЯ SCRATCH И ЕЁ РОЛЬ В
ДОПОЛНИТЕЛЬНОМ ОБРАЗОВАНИИ
Аннотация.
В
статье
среда
визуального
программирования
Scratch
рассмотрена как технология дополнительного образования по информатике.
Разобраны типы блоков и алгоритмические структуры, координатная модель
сцены, механизмы клонов и переменных, различие растровой и векторной
графики,
работа
со
спрайтами,
костюмами
и
покадровой
анимацией,
синхронизация звука с действием. Приведён пошаговый разбор учебного проекта
со скриптами и типичные ошибки реализации. Показано, что блочное кодирование
снимает синтаксический барьер и переносит акцент на логику алгоритма и
проектную деятельность.
Ключевые слова:
Scratch, блочное программирование, дополнительное
образование, информатика, спрайт, костюм, растровая и векторная графика,
анимация, озвучивание, алгоритмические структуры
Scratch — визуальная среда блочного программирования, созданная группой
Lifelong Kindergarten в Медиалаборатории MIT. Для дополнительного образования
она ценна сочетанием низкого порога входа и высокого потолка: первый
работающий скрипт собирается за минуту, а на той же платформе строится игра с
клонами, переменными состояния и обработкой событий. Ниже среда разобрана с
инженерной точностью — по типам блоков, координатной модели, работе с
графикой, спрайтами, костюмами и звуком, с пошаговой сборкой рабочего
проекта.
Блочное кодирование: типология блоков и структуры
Программа собирается из блоков, а не из текста, и форма блока строго
определяет его роль в коде. Различают пять типов, и понимание этой типологии
ускоряет сборку в разы.
Шляпные блоки (скруглённый верх) запускают скрипт по событию: «когда
нажат флажок», «когда клавиша пробел нажата», «когда я получу сообщение».
Каждый шляпный блок — точка входа отдельного потока.
Стековые блоки
(прямоугольные, с пазами сверху и снизу) выполняют
команду: «идти 10 шагов», «сменить костюм на», «изменить x на 5». Из них
набирается тело скрипта.
Блоки-репортёры (овальные) возвращают значение и вставляются внутрь
других блоков: координата «x», «ответ», переменная, «случайное число от 1 до
10». Самостоятельно они не выполняются — они поставляют данные.
Логические блоки
(шестиугольные) возвращают «истину» или «ложь»:
«касается указателя мыши?», «клавиша нажата?», операторы сравнения и связки
«и», «или», «не». Их место — в условиях.
C-блоки
(в форме скобы) охватывают другие блоки: «повторить 10»,
«всегда», «если — то», «повторять пока не». Именно они задают алгоритмические
структуры — цикл, ветвление, ожидание [1].
Несовместимые блоки физически не стыкуются: репортёр не встанет туда, где
ждут команду, а логический блок — только в гнездо условия. Это устраняет целый
класс синтаксических ошибок и переносит внимание с формы записи на логику
алгоритма.
Три структуры покрывают основу алгоритмики.
Последовательность
—
блоки, выполняемые сверху вниз.
Повторение
— C-блоки «повторить N»
(счётный цикл), «всегда» (бесконечный игровой цикл, ядро любой сцены),
«повторять пока не» (цикл с условием выхода). Ветвление — «если — то» и «если
— то — иначе». Уже на этом наборе собирается нетривиальная логика.
Событийная модель отличает Scratch
от линейного сценария. Скрипты
запускаются параллельно по событиям, а связь между спрайтами строится на
сообщениях: блок «передать [сообщение]» рассылает сигнал, а «когда я получу
[сообщение]» его ловит. Вариант «передать и ждать» выполняет обработчик
синхронно — вызывающий скрипт ждёт завершения, что нужно для строгой
очерёдности (реплика — ответ — реакция).
Для тиражирования однотипных объектов служат клоны. Блок «создать клон
самого себя» порождает копию со всеми скриптами; обработчик «когда я начинаю
как клон» задаёт её поведение; «удалить этот клон» освобождает память. Клоны
— штатный механизм для пуль, врагов, падающих объектов: один спрайт-шаблон
порождает десятки независимых экземпляров.
Переменные объявляются в двух областях видимости: «для всех спрайтов»
(глобальные — общий счёт, уровень) и «только для этого спрайта» (локальные —
своя скорость, свои очки клона). Различение областей видимости — не
формальность: локальная переменная у клона существует в каждом экземпляре
отдельно, что и позволяет тысяче клонов двигаться с разной скоростью. Списки
дают массивы — для инвентаря, очереди вопросов, таблицы рекордов.
Координатная система сцены. Сцена имеет фиксированный размер 480×360
пикселей с началом координат в центре. Ось x идёт от −240 (левый край) до 240
(правый), ось y — от −180 (низ) до 180 (верх). Позиция спрайта задаётся блоками
«перейти в x: y:», «изменить x на», «плыть 1 сек в точку»; текущие координаты
доступны репортёрами «x» и «y».
Направление измеряется в градусах: 90 — вправо, 0 — вверх, −90 — влево,
180 — вниз; поворот задаётся блоками «повернуть на» и «повернуться в
направлении». Критична настройка стиля вращения спрайта: «круговой» (полный
разворот), «влево-вправо» (только отражение по горизонтали, чтобы персонаж не
вставал вверх ногами) и «не вращать» (фиксированная ориентация). Неверный
стиль
вращения
—
частая
причина
того,
что
герой
при
движении
переворачивается; на практике для ходячего персонажа выбирается «влево-
вправо».
Взаимное перекрытие объектов регулируется слоями: блоки «перейти на
передний план» и «перейти назад на N слоёв» определяют, кто кого закрывает, —
фон уводится назад, интерфейс выносится вперёд.
Растровая и векторная графика в редакторе. Редактор костюмов работает
в двух режимах, и выбор между ними — практическое инженерное решение.
Растр — сетка пикселей с индивидуальным цветом каждой точки. Подходит
для пиксель-арта, сложной фактуры, обработки фотографий. Ограничение
принципиально: при увеличении пиксели растягиваются, края покрываются
«лесенкой», деталь теряется. Инструменты растрового режима — карандаш, кисть
с регулируемым диаметром, заливка, ластик, выделение области.
Вектор — описание изображения линиями, кривыми Безье и фигурами через
математические параметры. Следствие — независимость от масштаба: контур
пересчитывается при любом размере и остаётся гладким. Векторные инструменты
позволяют тянуть узлы, перегибать сегменты, группировать объекты, менять
порядок наложения, править форму по опорным точкам. Для персонажей, кнопок,
геометрической графики выбирается вектор — он масштабируется без потерь и
правится локально.
Ключевая практическая деталь, которую часто упускают, — точка центра
костюма
(перекрестие в редакторе). Вокруг неё спрайт вращается и по ней
позиционируется. Если у разных костюмов одного спрайта центр смещён, при
смене костюма изображение «прыгает», а при повороте героя уводит в сторону.
Правило: все костюмы одного спрайта выравниваются по единой точке центра —
обычно по опорной части фигуры (для персонажа — низ корпуса).
Ещё одно инженерное соображение — производительность. Крупные
растровые костюмы при сотнях клонов заметно нагружают отрисовку; для
массовых объектов берут компактные векторные спрайты. Преобразование «в
растр» необратимо огрубляет вектор, поэтому исходник разумно хранить в
векторном виде и растеризовать лишь копию.
Спрайты как объекты сцены. Спрайт — управляемый объект сцены,
инкапсулирующий собственные данные (координаты, направление, размер,
видимость, локальные переменные) и поведение (прикреплённые скрипты).
Архитектурно это близко к объекту: спрайты не лезут во внутренности друг друга,
а взаимодействуют сообщениями. Такая организация вводит инкапсуляцию и
обмен сообщениями до знакомства с самими терминами.
На сцене спрайты работают параллельно: у каждого свои шляпные блоки,
свои события, своя траектория. Наблюдая одновременное исполнение десятков
скриптов, обучающийся осваивает идею многопоточности наглядно, тогда как в
текстовых языках это тема повышенной сложности [2].
Костюмы и покадровая анимация. Костюм — одно из альтернативных
изображений спрайта; переключение костюмов даёт анимацию. Механизм —
классическая покадровая смена: два костюма с разным положением ног плюс их
циклическая смена с паузой создают походку.
Практика анимации сводится к нескольким приёмам. Костюмы именуются
осмысленно (walk1, walk2, jump) — тогда к ним обращаются по имени блоком
«сменить костюм на [walk1]», а не по хрупкому номеру. Циклическую анимацию
строят на «всегда → следующий костюм → ждать 0.1»; пауза задаёт частоту: 0,1
секунды ≈ 10 кадров в секунду — плавно и без рывков. Для управляемого
перехода по состояниям (покой, бег, прыжок) костюм переключают явным именем
внутри соответствующей ветки логики. Сменой костюма передают эмоции
(спокойное/испуганное лицо), фазы действия (замах/удар), состояния объекта
(целый/разбитый) — то есть визуальное состояние спрайта, управляемое
программой.
Озвучивание героев: звук как элемент логики. Звук в среде — не
украшение, а часть управляющей логики. Библиотека содержит готовые эффекты
и мелодии; собственный голос записывается встроенным рекордером прямо в
редакторе,
дорожка
обрезается
маркерами,
к
ней
применяются
эффекты
(громче/тише, быстрее/медленнее, эхо, реверс). Импортируются файлы форматов
mp3 и wav.
Принципиально различать два блока воспроизведения. «Запустить звук»
стартует дорожку и немедленно передаёт управление дальше — звук идёт
параллельно действию (фоновый эффект, короткий «поп» при попадании).
«Играть звук [имя] до конца» блокирует поток до окончания дорожки — это
нужно, когда следующий шаг должен начаться строго после реплики. Смешение
этих блоков — типичная причина того, что реплики наслаиваются или
обрываются.
Синхронизация речи с изображением строится связкой: одновременно
запускается смена костюма (герой «открывает рот»), выводится текстовое облачко
«сказать [текст]» и проигрывается записанная реплика «играть звук до конца».
Диалог двух персонажей выстраивается на сообщениях: первый говорит и по
завершении «передаёт» сигнал второму, тот отвечает и возвращает сигнал обратно
— очередь реплик соблюдается автоматически. Фоновая музыка выносится в
отдельный бесконечный поток «когда флажок → всегда → играть звук до конца»,
не мешая остальным скриптам [3].
Практикум: сборка игры «Поймай звёзды» по шагам. Ниже —
законченный проект, воспроизводимый на занятии за 20–25 минут; он задействует
клоны, переменные, сенсоры, костюмы и звук.
Спрайт «Корзина» (ловец) управляется мышью:
«когда нажат флажок» → «установить способ вращения [не вращать]» →
«всегда» {«перейти в x: (мышка по x) y: −150»}. Корзина скользит вдоль нижнего
края вслед за курсором.
Спрайт «Звезда» порождает падающие клоны:
«когда нажат флажок» → «скрыть» → «задать [счёт] значение 0» → «всегда»
{«создать клон самого себя» → «ждать (выдать случайное от 0.4 до 1.2) сек»}.
«когда я начинаю как клон» → «показать» → «перейти в x: (выдать
случайное от −220 до 220) y: 180» → «повторять пока не <(y) < −175>»
{ «изменить y на −6» → «если <касается [Корзина]?> то» { «изменить [счёт] на 1»
→ «запустить звук [поп]» → «удалить этот клон» } } → «удалить этот клон».
Разбор логики. Оператор «случайное» разбрасывает звёзды по ширине сцены
и разводит их во времени, поэтому падение не выглядит механическим.
Локальный характер клона позволяет каждой звезде падать независимо. Условие
выхода из цикла (y < −175) уничтожает пролетевшие мимо клоны — без этого
память переполнится сотнями невидимых объектов, и проект начнёт тормозить.
Проверка «касается Корзины» внутри цикла падения фиксирует поимку в тот же
кадр, начисляет очко, даёт звуковой отклик и удаляет клон.
Проект
расширяется
по
ступеням
сложности:
добавляется
таймер
и
переменная «жизни»; при пролёте звезды мимо корзины «изменить [жизни] на
−1»; по «жизни = 0» — «остановить всё» и смена костюма сцены на «Игра
окончена»; вводится нарастание темпа — с ростом счёта уменьшается пауза
между клонами [4].
Типичные ошибки реализации и их устранение. Практика выявляет
повторяющиеся дефекты, каждый с чётким решением. Клоны не удаляются —
проект замедляется: в скрипт клона обязательно вводится условие удаления по
выходу за границу или по событию. Персонаж переворачивается при движении
влево — исправляется стилем вращения «влево-вправо». Анимация дёргается —
костюмы не выровнены по центру: центры сводятся к одной точке. Реплики
наслаиваются — вместо «запустить звук» ставится «играть звук до конца» там,
где нужна очерёдность.
Скрипт не стартует
— отсутствует шляпный блок
события или спрайт скрыт («показать» не вызван).
Переменная ведёт себя
неожиданно у клонов — перепутаны области видимости: общий счёт делается
глобальным, индивидуальная скорость — локальной [5].
Scratch
предъявляет фундамент информатики в деятельной форме: типы
блоков и C-структуры вводят алгоритмику, координатная модель и клоны —
работу с объектами и памятью, растр и вектор — инженерную культуру графики,
костюмы — состояние и анимацию, звуковые блоки — синхронизацию потоков.
Разобранный проект показывает, что за внешней простотой стоит полноценная
логика — циклы, условия, события, управление жизненным циклом объектов.
Именно
поэтому
среда
служит
не
игрушкой,
а
рабочим
инструментом
дополнительного образования, где технический навык вырастает из доведённого
до конца собственного проекта.
Список использованной литературы
1. Голиков Д. В. Scratch для юных программистов. — СПб.: БХВ-Петербург,
2017. — 190 с.
2. Голиков Д. В. Scratch 3 для юных программистов. — СПб.: БХВ-Петербург,
2019. — 192 с.
3. Пашковская Ю. В. Творческие задания в среде Scratch: рабочая тетрадь для
5–6 классов. — 3-е изд., перераб. и доп. — М.: Лаборатория знаний, 2018. — 192 с.
4. Пашковская Ю. В. Scratch 3.0: творческие проекты на вырост: рабочая
тетрадь для 7–8 классов. — М.: Лаборатория знаний, 2019. — 187 с.
5. Торгашева Ю. В. Первая книга юного программиста. Учимся писать
программы на Scratch. — СПб.: Питер, 2017. — 128 с.