3–7Программирование

Scratch: первая игра за 30 минут

Scratch самый популярный язык программирования для детей: в нём программы собирают из цветных блоков, как конструктор, и сразу видят результат. Его придумали в лаборатории Массачусетского технологического института, и им пользуются миллионы школьников по всему миру. Делаем первую игру по шагам и объясняем, какие идеи программирования в ней спрятаны.

Для 3–7 классов и родителей.

Что такое Scratch

Scratch бесплатная среда программирования, которая работает прямо в браузере. Команды здесь не пишут текстом, а собирают из блоков, похожих на кусочки пазла: неправильно соединить их нельзя, поэтому синтаксических ошибок не бывает. Ребёнок думает о логике, а не о запятых и скобках.

В Scratch есть сцена, где всё происходит, и спрайты, персонажи и предметы, которыми можно управлять. У каждого спрайта свои скрипты, наборы блоков. Блоки разделены по цветам: синие отвечают за движение, фиолетовые за внешний вид, жёлтые за события, оранжевые за управление и переменные.

Что будет в игре

Внизу экрана корзинка, которую игрок двигает стрелками влево и вправо. Сверху падают яблоки. Если корзинка поймала яблоко, игроку начисляется очко, а яблоко снова появляется наверху в случайном месте. Если яблоко упало на землю, игра заканчивается.

Шаг 1. Корзинка

  • Удалите стандартного кота или оставьте его вместо корзинки. Добавьте спрайт корзинки из библиотеки.
  • Возьмите жёлтый блок «когда флажок нажат». К нему присоедините «перейти в x: 0 y: −140», чтобы корзинка стояла внизу посередине.
  • Добавьте оранжевый блок «повторять всегда». Внутрь положите «если клавиша стрелка вправо нажата, то изменить x на 10».
  • Рядом такое же условие для стрелки влево с изменением x на −10.

Здесь ребёнок встречает систему координат: x отвечает за положение по горизонтали, y по вертикали. Центр сцены точка (0; 0), левый край x = −240, правый 240. Это та же координатная плоскость, что в 6 классе по математике.

Шаг 2. Падающее яблоко

  • Добавьте спрайт яблока.
  • «Когда флажок нажат»: «перейти в x: (случайное от −220 до 220) y: 170».
  • «Повторять всегда»: «изменить y на −5». Яблоко будет падать.
  • Внутри того же цикла: «если касается корзинки, то» перенести яблоко снова наверх в случайное место.

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

Шаг 3. Очки

  • В разделе «Переменные» создайте переменную «очки».
  • В скрипте яблока после «когда флажок нажат» поставьте «задать очки значение 0».
  • В условии «если касается корзинки» добавьте «изменить очки на 1».

Переменная это ящик с названием, в котором хранится число. Сейчас в ящике «очки» лежит 0, после каждого пойманного яблока туда добавляется 1. Счётчик сразу показывается на сцене.

Шаг 4. Конец игры и сложность

  • В цикле яблока добавьте условие «если y < −170, то» сказать «Игра окончена!» и «стоп все».
  • Чтобы игра становилась сложнее, вместо «изменить y на −5» используйте «изменить y на (−5 − очки / 5)». С каждыми пятью очками яблоко падает быстрее.

Последний пункт тренирует настоящее мышление программиста: скорость не задана числом, а вычисляется по формуле из переменной. Так устроены почти все игры: сложность растёт вместе с успехами игрока.

Если что-то не работает

  • Корзинка улетает за край. Добавьте в цикл блок «если на краю, оттолкнуться» или проверку: если x больше 220, задать x = 220.
  • Яблоко не падает. Проверьте, что блок «изменить y» стоит внутри «повторять всегда», а не после него.
  • Очки не сбрасываются. Блок «задать очки значение 0» должен стоять сразу после флажка, до цикла.
  • Очки начисляются много раз за одно яблоко. После касания яблоко нужно сразу перенести наверх, иначе за несколько кадров касания оно засчитается несколько раз.

Поиск ошибок называют отладкой, и это половина работы любого программиста. В Scratch удобно отлаживать: можно нажать на отдельный блок и посмотреть, что он делает, или поставить блок «сказать» со значением переменной, чтобы видеть, что происходит внутри. Ошибаться в программировании нормально: важно уметь найти, где именно, и не бояться пробовать снова. Опытные программисты тратят на поиск ошибок не меньше времени, чем на написание кода.

Чему учит эта игра

  • События: программа реагирует на нажатие флажка и клавиш.
  • Цикл: повторение действий много раз.
  • Условие: если яблоко коснулось корзинки, то…
  • Переменная: хранение и изменение счёта.
  • Координаты и случайные числа: математика, которая оживает на экране.

Это те же понятия, которые потом встретятся в Python и любом другом языке. Посмотрите, как похожая игра «Угадай число» выглядит в виде текстового кода, в статье об игре на Python.

Что делать дальше

  • Добавить второе яблоко или «плохой» предмет, который нельзя ловить.
  • Добавить звуки и фон.
  • Сделать жизни: игра заканчивается после трёх упавших яблок.
  • Опубликовать игру в сообществе Scratch и посмотреть чужие проекты: у каждого можно открыть код и разобраться, как он устроен.

Когда блоков становится тесно, обычно в 11–13 лет, пора переходить на текстовый язык. Почему чаще всего выбирают Python, рассказали в отдельной статье.

Разберём на занятии

Занимаемся по всем школьным предметам с 4 по 11 класс: живые занятия, общая доска и домашка, которую проверяет тот же преподаватель.

Первое занятие бесплатное: можно посмотреть формат вместе с ребёнком и решить, подходит ли он.

Частые вопросы

С какого возраста можно начинать Scratch?

Официально с 8 лет, когда ребёнок уверенно читает. Для 5–7 лет есть упрощённая версия ScratchJr, где блоки с картинками и почти без текста.

Scratch это несерьёзно?

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