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 это несерьёзно?
Это полноценный язык программирования с циклами, условиями, переменными и даже рекурсией. Многие профессиональные программисты начинали именно с него. Ограничения появляются, когда проекты становятся большими, тогда и пора переходить дальше.