Занятие № 2. Движение
Упражнение № 1. Игра “Собери урожай”
Создадим игру в которой пользователь будет двигать спрайт при помощи стрелок на клавиатуре, чтобы собрать весь урожай. Морковь будет появляться в случайных точках сцены. Если игрок не успевает схватить морковь за три секунды, она перемещается в другое место на сцене.
Откройте шаблон проекта по следующей ссылке. Нажмите кнопку Войти внутрь проекта, чтобы начать редактирование шаблона.
В библиотеке спрайтов выберите спрайт Фермер и добавьте ему следующие скрипты.
Когда игрок кликает по зелёному флажку, спрайт перемещается в точку (-30, -30) 1
и поворачивается вправо 2
. Следующий скрипт отвечает за передвижение спрайта влево по нажатию на клавишу со стрелкой. После нажатия на стрелку, скрипт меняет направление спрайта 3
, проигрывает короткий звук 4
и передвигает спрайт на 60 шагов 5
. Спрайт отталкивается от краёв Сцены 6
, если это необходимо. Поскольку 60 шагов соответствуют одному квадрату в системе координат сцены, каждый раз спрайт с игроком перемещается на одну клетку.
Добавьте скрипт с помощью которого спрайт сможет двигаться вправо после нажатия клавиши. Чтобы сделать это быстрее, нажмите правой кнопкой на блок Когда клавиша стрелка влево нажата и выберите пункт Дублировать. К курсору мыши “прилипнет” копия скрипта. Щелкните мышью по рабочей области, чтобы разместить копию скрипта. Измените параметры блоков согласно следующему изображению:
Самостоятельно добавьте скрипты, с помощью которых игрок сможет передвигаться вверх и вниз.
Запустите игру, нажав на зелёный флажок и проверьте, передвигается ли спрайт Фермер.
Если всё работает правильно, выберите спрайт Урожай, и составьте для него следующий скрипт.
После нажатия на зелёный флаг, мешок с золотом будет каждые 3 секунды перемещаться в случайную часть поля. Количество собранных мешков сохраняется в переменную счёт
.
Переменные позволяют сохранять информацию, чтобы использовать её позже в наших программах. Подробнее о переменных вы узнаете на следующих занятиях.
В начале игры устанавливаем переменной счёт
значение 0 1
. Затем запускаем цикл, который будет повторяться 20 раз 2
. После каждого цикла морковь будет появляться в другом случайном месте 3
, давая игроку немного времени, чтобы схватить её 4
, и увеличить счёт, если игроку это удалось 5
.
Нам нужно чтобы морковь появлялась в одном из 48 квадратов сцены в случайном порядке. Вернитесь к первому рисунку, и обратите внимание, что координата х мешка может быть такой: -210, -150, -90, …, 210. Эти цифры расположены на расстоянии 60 шагов друг от друга, так что мы сможем вычислить координату х начиная с -210:
Похожие выражения получаются и для координаты у. Мы можем установить координату х моркови, сгенерировав случайное число от 0 до 7, умножая его на 60 и прибавляя к результату -210.
У игрока будет 3 секунды на то, чтобы схватить морковь. Это время вы можете изменить, чтобы упростить или усложнить игру. Для отслеживания времени используется встроенный в Scratch таймер, который мы обнуляем каждый раз, когда игрок собрал урожай или прошло 3 секунды.
В среде Scratch есть таймер, который фиксирует, сколько времени прошло с момента начала работы скрипта. Это можно использовать при создании собственных игр, в которых есть отсчёт времени.
Если игрок поймал мешок, то выполнятся команды которые находятся внутри блока если, то. В этом случае будет воспроизведён звук, и к счёту прибавится 1.
Игра готова. Запустите её, нажав на зелёный флажок. Если программа работает неправильно, сверьтесь со скриптами в этой инструкции, или позовите преподавателя.
Сохраните проект. Для этого выберите пункт меню Файл
- Сохранить
. В открывшемся окне, выберите папку в которую нужно сохранить проект, а также укажите имя файла (Money.sb3). Нажмите кнопку Сохранить
.
Задания для самостоятельной работы
Подумайте, как можно повысить или понизить сложность игры? Какие значения в скриптах для этого нужно изменить?
Упражнение № 2. Игра “Поймай яблоки”
Создадим игру в которой пользователю нужно поймать наибольшее количество яблок, которые падают с дерева. Яблоки нужно ловить тележкой которая двигается горизонтально с помощью стрелок.
Открой файл CatchApples_NoCode.sb2. Для этого создай новый проект, выбери пункт меню Файл - Загрузить с компьютера и выбери в появившемся окне нужный файл. В нём находится заготовка будущей игры с двумя спрайтами - Cart и Apple. Также заранее создана переменная score для того, чтобы хранить количество пойманных яблок.
Выбери спрайт Cart и составь для него следующий скрипт:
Нажми зелёный флажок. Тележка передвинется в центр Сцены. Затем скрипт постоянно проверяет состояние клавиш со стрелками и в зависимости от того, нажаты они или нет, двигает тележку.
Выбери спрайт Apple и создай для него следующий скрипт:
Сначала сбросим счёт 1
. Затем спрячем спрайт с помощью блока спрятаться из раздела Внешность 2
. После этого запускаем блок повторить для того, чтобы упало 30 яблок 3
. После этого спрайт перемещается в позицию со случайной координатой у 4
. Блок создать клон создаёт копию яблока 5
. Таким образом нам достаточно написать скрипт для одного яблока а не дублировать 30 яблок со своими скриптами. После этого скрипт остановится на случайный промежуток времени 6
и опять перейдёт к первому шагу блока повторить.
Создадим скрипт для клонов яблока. Выбери спрайт Apple и добавь для него следующий скрипт:
Как только у спрайта Apple появляется клон, он начинает работать по скрипту записанному после блока когда я начинаю как клон 1
. После этого с помощью блока всегда и блока изменить у на мы двигаем спрайт вниз. Если клон яблока коснулся спрайта Cart, значит яблоко поймано. В таком случае мы увеличиваем счёт игрока на единицу и удаляем этот клон яблока 3
. Если же клон яблока опустился ниже спрайта Cart, то мы удаляем яблоко и не засчитываем игроку очки 4
.
Нажми на зелёный флажок, чтобы протестировать готовую игру.
Задания для самостоятельной работы
Подумай, как можно повысить или понизить сложность игры? Какие значения в скриптах для этого нужно изменить?