Проект “Flappy Parrot”

Создадим проект-аналог игры Flappy Bird. Главный герой игры - попугай, должен пролетать через пространство между зелёными трубами. При этом трубы по высоте располагаются случайным образом. Управлять попугаем можно только с помощью клавиши Space . После нажатия этой клавиши попугай взлетает вверх на некоторую высота и затем продолжает плавно снижаться. Готовая игра может выглядеть следующим образом:

За пересечение препятствия игроку начисляется одно очко.

Создание проекта. Рисование спрайтов.

Создайте новый проект Scratch и удалите стандартный спрайт с изображением кота. Выберите для игры подходящий фон из библиотеки:

После этого добавьте спрайт, который лучше всего подойдёт на роль главного героя и назовите его Игрок.

Спрайт не обязательно должен изображать птицу. Найдите спрайт который больше всего вам нравится.

Теперь необходимо нарисовать трубы через которые будет пролетать главный герой. Создайте новый спрайт:

Используем для заливки фигур линейный градиент. Для этого щелкните по меню Заливка 1, выберите линейный градиент 2 и установите первый цвет градиента 3. Затем щелкните по второму цвету градиента 4 и настройте его:

Настройте цвет и толщину контура:

Выберите инструмент Прямоугольник image-20201212101808402 и нарисуйте первую деталь трубы:

При её рисовании ориентируйтесь на центр спрайта, обозначенный значком image-20201212101928892.

Совет

Если прямоугольник расположился не так как вы хотели, то можно отменить предыдущее действие с помощью кнопки image-20201212102040360, или с помощью инструмента Выбрать image-20201212102056015 щелкнуть левой кнопкой мыши по нарисованному прямоугольнику и изменить его положение и размер.

С помощью инструмента Прямоугольник нарисуйте утолщение в нижней части трубы:

С помощью инструмента Выбрать image-20201212102056015 обведите рамкой оба прямоугольника и нажмите кнопку Группировать image-20201212102535731. Выберите сгруппированные прямоугольники и создайте копию этой группы, последовательно нажав кнопки Копировать image-20201212102735850и Вставить image-20201212102751792. В поле для рисования появится копия группы. Отразим её по вертикали с помощью кнопки Отразить по вертикали image-20201212102908531. Используя инструмент Выбрать image-20201212102056015, переместите отражённую часть в нижнюю часть окна для рисования. Результат может выглядеть следующим образом:

Совет

Чтобы точнее передвигать выделенный объект, используйте клавиши со стрелками. Зажав клавишу ⇧Shift и стрелку, объект можно передвинуть на большее расстояние.

Дайте новому спрайту название Трубы.

Программируем движение препятствий

Создадим скрипт с помощью которого каждые три секунды будет создаваться клон спрайта Трубы. Клоны этого спрайта и будут двигаться по сцене.

Перейдите в закладку Код спрайта Трубы и добавьте ему следующий скрипт:

После этого добавьте скрипт который будут выполнять все клоны спрайта Трубы. Клон должен перейти в правую часть сцены и затем двигаться в сторону левого края сцены:

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

На данный момент отверстие между трубами всегда появляется на одинаковом месте. Исправьте последний скрипт следующим образом:

Теперь отверстие между трубами будет появляться на разной высоте относительно начала координат, а движение спрайта будет строго горизонтальным после того, как в блоке Плыть в качестве значения координаты y указана текущая координата клона, полученная с помощью блока-функции Положение y.

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

Программирование спрайта-игрока

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

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

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

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

Определение столкновений

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

Выберите спрайт Игрок и добавьте ему следующий скрипт. С помощью блока ждать до мы определяем, произошло ли одно из двух событий: спрайт Игрок коснулся спрайта Трубы или спрайт Игрок коснулся края экрана. Если одно из событий произошло, то спрайт произносит фразу Конец игры!, отправляет сообщение Конец игры и завершает другие скрипты этого спрайта.

После того как игра окончена, трубы тоже должны прекратить движение. Выберите спрайт Трубы и добавьте блоки с помощью которых получив сообщение Конец игры все остальные скрипты этого спрайта остановятся.

Счёт очков

Добавим возможность отслеживать, сколько препятствий пролетел игрок. Для этого выберите спрайт Трубы и добавьте переменную счёт.

Выберите спрайт Трубы и в скрипте Когда флажок нажат добавьте блок который обнулит значение счёта в начале новой игры:

После этого добавьте следующий скрипт:

Вам понадобятся следующие блоки:

Необходимо ждать до тех пор, пока координата x спрайта Игрок станет больше координаты x текущей позиции трубы. После того как это произойдёт, необходимо увеличить счёт на 1.

Проверьте работу проекта. Обратите внимание на то, чтобы счёт обнулялся в начале новой игры.

Подбор сложности

В данном проекте ряд параметров можно изменять, для того чтобы подобрать самую подходящую сложность. Поэкспериментируйте с разными параметрами (скорость движения труб, частота их появления, размер спрайтов в процентах и др.), чтобы подобрать подходящую сложность для игры.

*Улучшение игры

Добавьте возможность сохранять лучший результат в отдельной переменной.