Занятие № 2. Движение

Упражнение № 1. Игра “Собери золото”

Создадим игру в которой пользователь будет перемещать спрайт при помощи стрелок на клавиатуре, чтобы собрать максимальное количество мешков с золотом. Мешки будут появляться в случайных точках сцены. Если игрок не успевает схватить мешок за три секунды, тот перемещается в другое место.

Открой файл Money_NoCode.sb2. Этот файл будет шаблоном будущей игры. Для этого создай новый проект, выбери пункт меню Файл - Загрузить с компьютера и выбери в появившемся окне нужный файл.

В библиотеке спрайтов выбери спрайт Player и добавь ему следующие скрипты.

Когда игрок кликает по зелёному флажку, спрайт перемещается в точку (-30, -30) 1 и поворачивается вправо 2. Следующий скрипт отвечает за передвижение спрайта влево по нажатию на клавишу со стрелкой. После нажатия на стрелку, скрипт меняет направление спрайта 3 , проигрывает короткий звук 4 и передвигает спрайт на 60 шагов 5. Спрайт отталкивается от краёв Сцены 6, если это необходимо. Поскольку 60 шагов соответствуют одному квадрату в системе координат сцены, каждый раз спрайт с игроком перемещается на одну клетку.

Добавь скрипт с помощью которого спрайт сможет двигаться вправо после нажатия клавиши. Чтобы сделать это быстрее, нажми правой кнопкой на блок Когда клавиша стрелка влево нажата и выбери пункт Дублировать. К курсору мыши “прилипнет” копия блока и всех блоков, которые к нему присоединены. Щелкни мышью по рабочей области, чтобы разместить копию скрипта. Измени параметры блоков согласно следующему изображению:

Сделать самостоятельно

Самостоятельно добавь скрипты, с помощью которых игрок сможет передвигаться вверх и вниз.

Запусти игру, нажав на зелёный флажок image-20201206133738781 и проверь, передвигается ли спрайт Player.

Если всё работает правильно, выбери спрайт Gold, и составь для него следующий скрипт.

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

Переменные

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

В начале игры устанавливаем переменной score значение 0 1. Затем запускаем цикл, который будет повторяться 20 раз 2. После каждого цикла мешок с золотом будет появляться в другом случайном месте 3, давая игроку немного времени, чтобы схватить его 4, и увеличить счёт, если игроку это удалось 5.

Нам нужно чтобы мешок появлялся в одном из 48 квадратов сцены в случайном порядке. Вернись к первому рисунку, и обрати внимание, что координата х мешка может быть такой: -210, -150, -90, …, 210. Эти цифры расположены на расстоянии 60 шагов друг от друга, так что мы сможем вычислить координату х начиная с -210:

\[ x=-210+(0*60) \]

\[ x=-210+(1*60) \]

\[ x=-210+(2*60) \]

Похожие выражения получаются и для координаты у. Мы можем установить координату х мешка, сгенерировав случайное число от 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.

Нажми на зелёный флажок, чтобы протестировать готовую игру.

Задания для самостоятельной работы

Подумай, как можно повысить или понизить сложность игры? Какие значения в скриптах для этого нужно изменить?