Занятие № 9. Циклы

Упражнение № 1. Игра “Догонялки”

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

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

Открой файл Chase-NoCode.sb2 и выбери спрайт Игрок. Создай для него следующий скрипт:

Нажми на зелёный флажок. Теперь спрайтом можно управлять с помощью стрелок на клавиатуре.

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

Теперь выбери спрайт Мяч2 и добавь ему следующий скрипт:

В начале игры мы перезапускаем таймер, чтобы проследить сколько секунд игрок смог убегать от мяча 1. Затем мы задаём начальное значение скорости мяча и сохраняем его в переменной скорость 2. Дальнейшие команды помещаются в блок-цикл всегда. Чтобы мяч следовал за игроком мы используем блок повернуться к, в блоки идти … шагов указываем переменную скорость и отталкиваемся от края сцены 3. Если мяч коснулся игрока мы выводим на экран количество секунд которое игрок смог убегать 5. С помощью блока стоп все все запущенные скрипты остановятся и игра закончится.

Теперь выбери спрайт Мяч1 и добавь ему такой скрипт:

Код для первого мяча также находится в цикле всегда 1. Если этот мяч касается игрока, то мы увеличиваем скорость передвижения красного мяча на два изменив значение переменной 2. С помощью блока стоп этот скрипт мы останавливаем только скрипт этого спрайта и зелёный мяч останавливается 3.

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

Упражнение № 2. Игра “Space Defender”

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

Открой файл SpaceDefender-NoCode.sb2. В начале создадим переменные которые нам понадобятся. Перейди в раздел Данные и создай три переменные: выстрелов, попаданий и времениОсталось:

Размести мониторы этих переменных на сцене удобным для тебя способом.

В нижней части окна выбери сцену image-20201210140946862 и добавь ей следующие скрипты:

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

Как только сцена получит сообщение конецигры она сменит свой фон и остановит выполнение всех скриптов.

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

Выбери спрайт Станция и добавь для него следующий скрипт:

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

Выбери спрайт Корабль1 и создай для него блок старт который будет управлять движением спрайта и его клона:

Скрипт движения корабля почти ничем не отличается от скрипта движения дружественной космической станции.

Теперь добавь спрайту Корабль1 ещё два скрипта которые разместят сам спрайт и его клон в стартовой позиции и вызовут блок старт для начала их движения:

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

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

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

Теперь добавим скрипт который будет выполнять клон снаряда после своего появления:

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

Теперь игра полностью готова. Нажми на флажок и протестируй её.