Scratch — мини-проекты с разбором блоков

Приветствую! Здесь вы наверняка найдете, что ищете. Примеры в лаборатории рассчитаны на то, что мы разбираем что-то конкретное.

Текущая статья посвящена примерам: Scratch 3.0 с разбором блоков — квадрат, игра, клоны, лабиринт, гравитация; готовый код для школьников и поиска «scratch примеры», «scratch код игры»..

Поэтому за теорией по текущей теме вам — в энциклопедию. Если ещё не погружались, то маршрут прост:

  1. Основы
  2. Система и сеть
  3. Данные и разметка
  4. Код и разработка
  5. Языки
  6. Искусственный интеллект
  7. Проект
  8. Инфраструктура и безопасность
  9. Спин-офф

Обязательно пройдитесь.

А теперь приступим к нашему предмету.

Теория и соседние материалы
Энциклопедия — разделы по вашей теме.

Зачем эта глава

Здесь собраны готовые фрагменты кода Scratch 3.0 с объяснением каждого важного блока.

Откройте scratch.mit.eduСоздавай, добавьте спрайты и перенесите блоки из примеров. Теория по редактору — в справочнике Scratch; отдельные приёмы (события, переменные, клоны) — в примерах скриптов.

Порядок изучения

Сначала базовые блоки → затем мини-проекты ниже → шесть полных игр с контрольными точками в главах 3338.


Тема Раздел
scratch как нарисовать квадрат / фигуру Квадрат пером
scratch радуга / рисование линиями Радужный многоугольник, Радужные линии
scratch игра собери монеты / счёт Собери монеты
scratch движение стрелками Собери монеты, Лабиринт — стрелки
scratch пинг понг / мяч отскакивает Пинг-понг
scratch клоны пример / дождь Дождь из клонов, Салют
scratch гравитация прыжок Прыжок с гравитацией
scratch лабиринт код Лабиринт — стрелки + полный урок
scratch сообщения между спрайтами Старт по сообщению
блоки scratch для начинающих Элементы Scratch, Примеры скриптов Scratch — отдельные блоки

Связь с энциклопедией

Тема в Lab Теория в энциклопедии Пошаговая игра
События, флаг, клавиши Scratch §2 Scratch — как учиться по проектам — метод
Костюмы, анимация Scratch §3 Scratch — радужные линии и первый проект — радуга
Координаты, движение Scratch §4 Scratch — лабиринт на клавишах — лабиринт
Условия, касание Scratch §5 Scratch — лабиринт на клавишах
Циклы Scratch §6 все игры 33–38
Переменные, счёт Scratch §7 Scratch — баскетбол и гравитация — баскетбол
Случайные числа Scratch §8 Scratch — астероиды в космосе — астероиды
Клоны Scratch §9 Scratch — арканоид с клонами — арканоид
Перо, рисование Scratch §13 Scratch — радужные линии и первый проект
Свои блоки Scratch §15 Scratch — продвинутый платформер — платформер
Отладка Scratch §17 типичные ошибки ниже
Два уровня практики

Эта страница (Lab) — короткие фрагменты с разбором каждого блока.

Энциклопедия 33–38 — полные игры с эскизом, частями А–Г и контрольными точками.

Справочник Scratch §1–§17 — определения и картинки блоков.


Элементы Scratch

Элемент Что означает
Спрайт Объект на сцене (кот, монета, кнопка). У каждого спрайта свой набор скриптов
Сцена Фон; координаты X от −240 до 240, Y от −180 до 180; центр — (0, 0)
Событие Жёлтый блок вверху скрипта — когда программа начинает выполнять цепочку
Цикл Повторяет вложенные блоки много раз или бесконечно
Условие Блок «если … то» — выполняется только при истинном условии (шестиугольник)
Переменная Именованное число или текст; можно показывать на сцене как счётчик
Клон Копия спрайта; у каждого клона свой экземпляр скрипта «при создании клона»

Цвета блоков в Scratch 3.0

Цвет Категория Для чего
Жёлтый События Старт по флагу, клику, клавише, сообщению
Голубой Движение Шаги, поворот, координаты x/y
Фиолетовый Внешний вид Костюмы, размер, показать/спрятать
Розовый Звук Воспроизведение и эффекты
Оранжевый Управление Циклы, условия, ожидание
Сенсоры Сенсоры Клавиши, касание, мышь, ответ
Светло-голубой Переменные Создание, изменение, списки
Зелёный (тёмный) Перо Рисование на сцене (расширение)
Розово-красный Сделать Свои блоки-процедуры

Основы мини-проектов

Обязательный каркас

Любой проект начинается с зелёного флага ⚑. В одном скрипте сбрасывайте переменные, позицию и след на сцене:

когда щёлкнут по ⚑
стереть всё
перейти в x: (0) y: (0)
установить [счёт v] в (0)
показать

Разбор блоков:

Блок Смысл
когда щёлкнут по ⚑ Точка входа: скрипт запускается при нажатии зелёного флага или при повторном старте игры
стереть всё Очищает рисунки модуля Перо на сцене (нужно расширение «Перо»)
перейти в x: … y: … Мгновенно ставит спрайт в заданную точку без анимации шагов
установить [счёт] в (0) Записывает в переменную счёт число 0; переменную создайте во вкладке «Переменные»
показать Делает спрайт видимым, если до этого его спрятали
Перо

Кнопка «+ Расширения» внизу слева → Перо. Без опустить перо линии не рисуются. Теория — §13 справочника.


Стартовые мини-проекты

Как нарисовать квадрат в Scratch

Что получится: на сцене появится замкнутый квадрат со стороной 100 шагов.

Как собрать: один спрайт «Карандаш» → расширение Перо → скрипт ниже.

когда щёлкнут по ⚑
стереть всё
опустить перо
перейти в x: (-50) y: (50)

повторить (4)
  идти (100) шагов
  повернуть вправо на (90)
конец
поднять перо

Разбор:

Блок Смысл
опустить перо Включить рисование линии за спрайтом при движении
перейти в x: (-50) y: (50) Стартовый угол квадрата — левый верхний (подберите координаты под размер сцены)
повторить (4) Четыре стороны многоугольника
идти (100) шагов Провести линию длиной 100 в текущем направлении
повернуть вправо на (90) Поворот на прямой угол; сумма четырёх поворотов = 360°
поднять перо Остановить рисование, чтобы следующее движение не оставляло след

Частая ошибка: забыли опустить перо — спрайт двигается, линий нет.

Теория: §6 циклы, §13 перо. Похожее на Python: Turtle — квадрат.


Радужный многоугольник

Что получится: «звезда» из разноцветных шестиугольников, повёрнутая несколько раз.

когда щёлкнут по ⚑
стереть всё
опустить перо

повторить (36)
  установить цвет пера в (случайное от 1 до 200)
  повторить (6)
    идти (40) шагов
    повернуть вправо на (60)
  конец
  повернуть вправо на (10)
конец

Разбор:

Блок Смысл
установить цвет пера в (случайное от 1 до 200) Каждый виток — новый оттенок (Scratch использует шкалу 0–200)
Внутренний повторить (6) + поворот 60° Правильный шестиугольник (360 ÷ 6 = 60)
Внешний повторить (36) + поворот 10° 36 × 10° = полный оборот узора вокруг центра

Анимация «Дыхание»

Что получится: спрайт плавно «раздувается» и сжимается за счёт смены костюмов.

Подготовка: два костюма одного спрайта — обычный и чуть увеличенный (вкладка КостюмыДублироватьИзменить размер).

когда щёлкнут по ⚑
навсегда
  следующий костюм
  ждать (0.3) сек
конец

Разбор:

Блок Смысл
навсегда Бесконечный цикл — анимация идёт, пока не нажмёте красную кнопку Stop
следующий костюм Переключает костюм по кругу: 1 → 2 → 1 → …
ждать (0.3) сек Пауза между кадрами; меньше значение — быстрее «дыхание»

Кликер со счётом

Что получится: при клике по спрайту растёт счёт и на миг увеличивается размер — простая «игра-кликер».

Подготовка: переменная счёт, галочка «показывать на сцене».

когда щёлкнут по ⚑
установить [счёт v] в (0)

когда этот спрайт нажат
изменить [счёт v] на (1)
изменить размер на (5)
ждать (0.1) сек
изменить размер на (-5)

Разбор:

Блок Смысл
когда этот спрайт нажат Отдельное событие — срабатывает при клике именно по этому спрайту
изменить [счёт v] на (1) Прибавляет 1 к текущему значению переменной
изменить размер на (5) / (-5) Визуальный «отклик» на клик без смены костюма

След за мышью (рисовалка)

Что получится: при зажатой кнопке мыши спрайт рисует линию за курсором.

когда щёлкнут по ⚑
стереть всё
опустить перо
перейти к [указатель мыши v]

повторять всегда
  если <нажата кнопка мыши?> то
    идти к [указатель мыши v]
  иначе
    поднять перо
    перейти к [указатель мыши v]
    опустить перо
  конец
  ждать (0.02) сек
конец

Разбор:

Блок Смысл
нажата кнопка мыши? Условие (шестиугольник): истина, пока кнопка зажата
идти к [указатель мыши] Движение к курсору с рисованием, если перо опущено
Ветка иначе Когда кнопку отпустили — поднять перо, «перепрыгнуть» к мыши без линии, снова опустить
ждать (0.02) сек Снижает нагрузку на процессор в цикле повторять всегда

Мини-проекты — разбор по темам

1. Графика и анимация

1.1. Радужные линии между точками

Идея: три точки летят по сцене; четвёртый спрайт рисует между ними цветные отрезки. Полная пошаговая сборка — практика 1 — радуга.

Спрайт «Точка 1» (дублируйте два раза → Точка 2, Точка 3):

когда щёлкнут по ⚑
перейти в x: (случайное от -200 до 200) y: (случайное от -150 до 150)
направиться в (случайное от -180 до 180)

повторять всегда
  идти (10) шагов
  если <касается края?> то
    отскочить от края
  конец
конец
Блок Смысл
направиться в (…) Задаёт угол движения в градусах: 0° — вверх, 90° — вправо
идти (10) шагов Плавное движение вперёд (в отличие от перейти в)
касается края? Проверка границы сцены
отскочить от края Разворачивает спрайт и «отражает» траекторию

Спрайт «Рисующая точка»:

когда щёлкнут по ⚑
стереть всё
опустить перо

повторить (3)
  установить цвет пера в (случайное от 1 до 200)
  перейти к [Точка 1 v]
  перейти к [Точка 2 v]
  перейти к [Точка 3 v]
  ждать (0.01) сек
конец
Блок Смысл
перейти к [Точка 1 v] Мгновенный прыжок к центру выбранного спрайта; между прыжками рисуется линия
Внешний повторить (3) Три «кадра» узора; увеличьте число для более плотного рисунка

Совет: правый клик по флагу → Турбо режим, если рисование тормозит.

Полный урок: Scratch — радужные линии и первый проект — радужные линии. Теория: §4 координаты, §13 перо.


1.2. Звёздное небо из клонов

Идея: при старте создаётся много копий «звезды» в случайных местах.

Спрайт «Звезда» — маленький жёлтый кружок; при ⚑ скрыт:

когда щёлкнут по ⚑
скрыть

повторить (50)
  создать клон самого себя
конец

при создании клона
перейти в x: (случайное от -240 до 240) y: (случайное от -180 до 180)
изменить размер на (случайное от 20 до 80) %
показать
Блок Смысл
скрыть Оригинал не виден; на сцене только клоны
создать клон самого себя Копия спрайта со своим скриптом «при создании клона»
при создании клона Отдельная шапка скрипта — выполняется один раз для каждого клона
изменить размер на … % Случайный масштаб — звёзды разного «блеска»

Для мерцания добавьте в конец клона цикл изменить яркость вместо немедленного удалить этот клон.

Теория: Scratch §9, §8 случайные числа.


2. Игры и интерактив

2.1. Игра «Собери монеты» — полный разбор

Что получится: герой ходит стрелками, монеты дают +1 к счёту и перепрыгивают в новое место.

Спрайты: Герой, Монета, Ведущий (пустой квадрат или фон). Переменная счёт — для всех спрайтов, показывать на сцене.

Герой:

когда щёлкнут по ⚑
перейти в x: (0) y: (0)

повторять всегда
  если <нажата клавиша [стрелка вправо]?> то
    изменить x на (5)
  конец
  если <нажата клавиша [стрелка влево]?> то
    изменить x на (-5)
  конец
  если <нажата клавиша [стрелка вверх]?> то
    изменить y на (5)
  конец
  если <нажата клавиша [стрелка вниз]?> то
    изменить y на (-5)
  конец
  ждать (0.02) сек
конец
Блок Смысл
нажата клавиша [стрелка вправо]? Сенсоры: true, пока клавиша зажата
изменить x на (5) Сдвиг вправо на 5 пикселей за один проход цикла
ждать (0.02) сек ~50 обновлений в секунду — плавное движение без «телепорта»

Монета:

когда щёлкнут по ⚑
показать
перейти в x: (случайное от -200 до 200) y: (случайное от -150 до 150)

когда я касаюсь [Герой v]
изменить [счёт v] на (1)
перейти в x: (случайное от -200 до 200) y: (случайное от -150 до 150)
Блок Смысл
когда я касаюсь [Герой v] Событие срабатывает в момент касания — не нужен цикл с проверкой
Повторный перейти в случайную точку Монета «переспавнивается»; альтернатива — спрятать и создать клон

Ведущий:

когда щёлкнут по ⚑
установить [счёт v] в (0)
сказать [Собери монеты!] в течение (2) сек

Чек-лист: после ⚑ счёт = 0; каждое касание +1 ровно один раз; имена спрайтов в блоках совпадают с панелью спрайтов.

Теория: §5 условия и касание, §7 переменные. Разбор блоков по одному: Примеры скриптов Scratch — счётчик монет.


2.2. Движение стрелками — заготовка для лабиринта

Что получится: персонаж ходит по сцене; этот же скрипт — основа лабиринта.

когда щёлкнут по ⚑
перейти в x: (0) y: (0)

повторять всегда
  если <нажата клавиша [стрелка вверх]?> то
    изменить y на (4)
  конец
  если <нажата клавиша [стрелка вниз]?> то
    изменить y на (-4)
  конец
  если <нажата клавиша [стрелка вправо]?> то
    изменить x на (4)
  конец
  если <нажата клавиша [стрелка влево]?> то
    изменить x на (-4)
  конец
  ждать (0.02) сек
конец
Блок Смысл
Четыре отдельных если Каждая стрелка проверяется независимо; можно нажать диагональ (два если сработают за кадр)
Шаг 4 Меньше шага — точнее проход по коридору; при «проходе сквозь стену» уменьшите до 2
ждать (0.02) сек Обязательная пауза в повторять всегда — иначе Scratch перегружает цикл

Стены: после движения добавьте если <касается цвета [#000000]?> то и откат изменить x/y в обратную сторону — подробно в 34, часть В.


2.3. Прыжок с гравитацией — заготовка для платформера

Что получится: герой падает вниз и прыгает по пробелу — ядро баскетбола и платформера.

Переменные скорость_y и на_земле — «для всех спрайтов» или только для героя.

когда щёлкнут по ⚑
установить [скорость_y v] в (0)
установить [на_земле v] в (1)

повторять всегда
  если <нажата клавиша [стрелка вправо]?> то
    изменить x на (4)
  конец
  если <нажата клавиша [стрелка влево]?> то
    изменить x на (-4)
  конец
  если <нажата клавиша [пробел] и <(на_земле) = (1)>> то
    установить [скорость_y v] в (12)
    установить [на_земле v] в (0)
  конец
  изменить y на (скорость_y)
  изменить [скорость_y v] на (-1)
  если <касается [Земля v] или <касается цвета [#00cc00]>> то
    установить [скорость_y v] в (0)
    установить [на_земле v] в (1)
  иначе
    установить [на_земле v] в (0)
  конец
  ждать (0.02) сек
конец
Блок Смысл
изменить y на (скорость_y) Позиция += скорость каждый кадр — имитация падения
изменить [скорость_y] на (-1) Ускорение вниз (гравитация); число подберите под «вес» персонажа
на_земле = 1 Разрешает прыжок только когда герой стоит на полу
касается [Земля] или цвет Пол — отдельный спрайт или зелёная заливка на фоне

Полные уроки: Scratch — баскетбол и гравитация — баскетбол, Scratch: платформер и демосцена — платформер, Scratch — продвинутый платформер — продвинутый платформер.


2.4. Упрощённый пинг-понг

Спрайты: Ракетка (низ экрана, стрелки ← →), Мяч. Переменные dx, dy — скорость мяча по осям.

Мяч — ключевые блоки:

когда щёлкнут по ⚑
перейти в x: (0) y: (0)
установить [dx v] в (4)
установить [dy v] в (4)

повторять всегда
  изменить x на (dx)
  изменить y на (dy)
  если <касается края?> то
    отскочить от края
    установить [dy v] в ((-1) * (dy))
  конец
  если <касается [Ракетка v]?> то
    установить [dy v] в (abs (dy))
    установить [dx v] в ((dx) + ((x) - (x позиция [Ракетка v])) / 10)
  конец
  если <y < (-170)> то
    сказать [Проигрыш!] в течение (1) сек
    остановить [все v]
  конец
  ждать (0.02) сек
конец
Блок Смысл
изменить x на (dx) Имитация физики: позиция += скорость каждый кадр
установить [dy] в ((-1) * (dy)) Отражение от верхней/нижней стенки — инверсия вертикальной скорости
abs (dy) После удара о ракетку мяч летит вверх (положительный dy)
(x) - (x позиция [Ракетка]) Чем дальше от центра ракетки удар, тем сильнее боковой отскок
остановить [все v] Останавливает все скрипты всех спрайтов — конец партии

Полный арканоид с кирпичамипрактика 4. Lab: Примеры скриптов Scratch — движение с границами.


2.5. Мини-викторина

Идея: ведущий задаёт вопрос; ответ проверяется блоком «ответ».

когда щёлкнут по ⚑
установить [счёт v] в (0)
сказать [Столица Франции?] в течение (2) сек
ждать (2) сек
если <(ответ) = [Париж]> то
  изменить [счёт v] на (1)
  сказать [Верно!] в течение (1) сек
иначе
  сказать [Попробуй ещё] в течение (1) сек
конец
Блок Смысл
сказать … в течение Облачко над спрайтом с таймером
ждать (2) сек Даёт время прочитать вопрос
(ответ) Сенсоры: текст, введённый в поле «ответ» на сцене (включите в настройках сцены)
Сравнение с [Париж] Регистр и пробелы должны совпасть; для устойчивости используйте буквы (ответ) = буквы (Париж)

3. Клоны и эффекты

3.1. Дождь из клонов

когда щёлкнут по ⚑
скрыть

повторять всегда
  создать клон самого себя
  ждать (0.1) сек
конец

при создании клона
перейти в x: (случайное от -240 до 240) y: (180)
показать
повторять пока не <y < (-180)>
  изменить y на (-8)
  ждать (0.02) сек
конец
удалить этот клон
Блок Смысл
Цикл с создать клон Каждые 0.1 с новая капля
повторять пока не <y < (-180)> Капля падает, пока не выйдет за нижний край
удалить этот клон Обязательно — иначе сотни невидимых клонов замедлят проект

3.2. Салют по пробелу

когда щёлкнут по ⚑
скрыть

когда нажата клавиша [пробел]
повторить (20)
  создать клон самого себя
конец

при создании клона
перейти в x: (0) y: (0)
показать
направиться в (случайное от -180 до 180)
изменить цвет на (случайное от 1 до 200)
повторить (30)
  двигаться (5) шагов
  изменить размер на (-3)
  ждать (0.02) сек
конец
удалить этот клон
Блок Смысл
направиться в (случайное …) Каждая частица летит в своём направлении
изменить размер на (-3) Частица «угасает», уменьшаясь
Пакет из 20 клонов по пробелу Один залп салюта

4. Процедуры и сообщения

4.1. Свой блок «прыжок»

Сделать → Создать блок → имя прыгнуть, добавить параметр высота:

определить прыгнуть (высота)
повторить (высота)
  изменить y на (4)
конец
повторить (высота)
  изменить y на (-4)
конец

Вызов у героя при нажатии пробела: прыгнуть (10).

Элемент Смысл
определить … Шапка своего блока — тело хранится отдельно
Параметр высота Число передаётся при вызове — один блок для низкого и высокого прыжка
Два цикла вверх/вниз Симметричная дуга без физики гравитации

4.2. Старт игры по сообщению (меню)

Кнопка «Играть»:

когда этот спрайт нажат
передать [старт_игры v] и ждать

Герой:

когда щёлкнут по ⚑
скрыть

когда я получу [старт_игры v]
показать
перейти в x: (0) y: (-80)
Блок Смысл
передать [старт_игры] и ждать Сигнал всем спрайтам; кнопка ждёт, пока обработчики закончат
когда я получу [старт_игры] Герой «оживает» только после клика по меню
скрыть при ⚑ Герой не двигается до старта

Имена сообщений создаются в выпадающем списке блока «передать» — буква в букву одинаковые во всех скриптах.

Теория: Scratch §2 — сообщения. Lab: Примеры скриптов Scratch — сообщение между спрайтами. Игра: Scratch — лабиринт на клавишах — лабиринт, смена уровня.


5. Шесть игр — полный маршрут

Мини-проекты выше — короткие заготовки для поиска и копирования блоков. Шесть игр с эскизами, частями А–Д и контрольными точками — в энциклопедии:

Проект Глава Главные блоки
1 Радужные линии Scratch — радужные линии и первый проект Перо, движение, дубликаты
2 Лабиринт Scratch — лабиринт на клавишах Клавиши, цвет стен, сообщения
3 Баскетбол Scratch — баскетбол и гравитация Гравитация, хитбокс
4 Арканоид Scratch — арканоид с клонами Клоны, отскок мяча
5 Астероиды Scratch — астероиды в космосе Мышь, wrap-экран, стрельба
6 Платформер Scratch — продвинутый платформер Склоны, враг, анимация

Remix MIT и демосцена — Стартовые проекты MIT Scratch, Scratch: платформер и демосцена.


6. Типичные ошибки

Симптом Причина Что сделать
Скрипт не запускается Нет жёлтого блока-события Добавьте когда щёлкнут по ⚑ или другое событие
Счёт +10 за одну монету Событие касания срабатывает каждый кадр спрятать монету или флаг «уже собрано»
Линии не рисуются Перо поднято или расширение не включено + Расширения → Перо → опустить перо
Сотни «призраков» на сцене Клоны без удалить этот клон В конце жизни клона — удаление
Герой проходит сквозь стену Шаг 5–10 при проверке цвета после движения Сначала если цвет, потом изменить x/y на 2–4
Сообщение не доходит Опечатка в имени Выберите одно имя из списка во всех блоках

Отладка — §17 справочника Scratch.


7. Чек-лист перед публикацией

  • Зелёный флаг сбрасывает счёт, позиции и след на сцене.
  • Имена спрайтов в блоках касается, перейти к совпадают с панелью справа.
  • У каждого клона есть удалить этот клон.
  • Проект сохранён (Файл → Сохранить на компьютер или в аккаунте).
  • Проверка в Турбо режиме (правый клик по флагу), если анимация медленная.

Куда двигаться дальше

Уровень Материал
Блоки по отдельности Примеры скриптов Scratch
Справочник редактора Scratch — энциклопедия §1–§17
Метод «эскиз → части» Как учиться по проектам
Шесть игр пошагово Scratch — радужные линии и первый проектScratch — продвинутый платформер
Текстовый код после Scratch Таблица Scratch-Python, Python для детей
Рисование в Python Рисование в браузере (JavaScript)
FAQ по Scratch Программирование — итоги — вопросы и ответы