Занятие № 9. Циклы
Упражнение № 1. Игра “Догонялки”
Разработаем игру в которой спрайт игрока будет убегать от двух мячей, которые будут стараться его догнать. Управлять персонажем игрок сможет с помощью стрелок на клавиатуре.
Правила догонялок простые: если игрока касается зелёный мяч, то красный мяч начинает двигаться в два раза быстрее. Если игрока касается красный мяч, то игра заканчивается. Программа будет вести отсчёт времени и скажет, сколько секунд игрок смог убегать от мячей.
Открой файл Chase-NoCode.sb2 и выбери спрайт Игрок. Создай для него следующий скрипт:
Нажми на зелёный флажок. Теперь спрайтом можно управлять с помощью стрелок на клавиатуре.
Теперь добавь переменную скорость которую будет использовать красный мяч.
Теперь выбери спрайт Мяч2 и добавь ему следующий скрипт:
В начале игры мы перезапускаем таймер, чтобы проследить сколько секунд игрок смог убегать от мяча 1
. Затем мы задаём начальное значение скорости мяча и сохраняем его в переменной скорость 2
. Дальнейшие команды помещаются в блок-цикл всегда. Чтобы мяч следовал за игроком мы используем блок повернуться к, в блоки идти … шагов указываем переменную скорость и отталкиваемся от края сцены 3
. Если мяч коснулся игрока мы выводим на экран количество секунд которое игрок смог убегать 5
. С помощью блока стоп все все запущенные скрипты остановятся и игра закончится.
Теперь выбери спрайт Мяч1 и добавь ему такой скрипт:
Код для первого мяча также находится в цикле всегда 1
. Если этот мяч касается игрока, то мы увеличиваем скорость передвижения красного мяча на два изменив значение переменной 2
. С помощью блока стоп этот скрипт мы останавливаем только скрипт этого спрайта и зелёный мяч останавливается 3
.
Игра готова. Нажми на флажок чтобы её протестировать.
Упражнение № 2. Игра “Space Defender”
Разработаем игру в которой космический корабль должен защищать космическую станцию от вражеских кораблей. При этом в игре есть таймер на одну минуту после истечения которой игра заканчивается. Игра остановится также если игрок попадёт по дружеской космической станции. Игра учитывает сколько выстрелов было сделано и сколько из них попали в цель.
Открой файл SpaceDefender-NoCode.sb2. В начале создадим переменные которые нам понадобятся. Перейди в раздел Данные и создай три переменные: выстрелов, попаданий и времениОсталось:
Размести мониторы этих переменных на сцене удобным для тебя способом.
В нижней части окна выбери сцену и добавь ей следующие скрипты:
Данный скрипт сменит фон сцены на стартовый, перезапустит таймер и в цикле всегда будет менять значение переменной времениОсталось. Если прошла минута, скрипт отравляет сообщение конецигры.
Как только сцена получит сообщение конецигры она сменит свой фон и остановит выполнение всех скриптов.
Теперь выбери спрайт Игрок и добавь ему скрипт с помощью которого корабль сможет передвигаться с помощью стрелок влево и вправо:
Выбери спрайт Станция и добавь для него следующий скрипт:
В скрипте спрайта запускается цикл всегда в котором на каждой итерации выбирается случайное значение для того, сколько шагов должен пройти спрайт. Также если спрайт дошел до правого края сцены, то он переместиться в левый край сцены как бы облетев её.
Выбери спрайт Корабль1 и создай для него блок старт который будет управлять движением спрайта и его клона:
Скрипт движения корабля почти ничем не отличается от скрипта движения дружественной космической станции.
Теперь добавь спрайту Корабль1 ещё два скрипта которые разместят сам спрайт и его клон в стартовой позиции и вызовут блок старт для начала их движения:
Если сейчас запустить игру, то корабли и станция должны начать движение, а ты сможешь управлять космическим кораблём с помощью стрелок влево и вправо. Также должен начаться обратный отсчёт времени. Теперь нужно добавить скрипт для снаряда которым будет стрелять твой космический корабль.
Выбери спрайт Снаряд и добавь ему следующий скрипт:
Сам спрайт мы прячем и по нажатию на клавишу Пробел
создаём клон снаряда который и будет лететь к цели. Это сделано для того, чтобы ты мог запустить сразу несколько снарядов. Также этот сценарий обнуляет значение переменных выстрелов и попаданий.
Теперь добавим скрипт который будет выполнять клон снаряда после своего появления:
Клон переместиться в то же место где сейчас находится спрайт Игрок. После этого запускается цикл повторять пока не. Он будет работать пока снаряд не долетит до верхнего края сцены и после этого передаст управление блоку удалить клон. Внутри цикла спрайт постоянно проверяет, касается ли он корабля или космическую станцию. Если снаряд попал в корабль, то мы увеличиваем счётчик попаданий на 1 и удаляем этот клон снаряда. Если же мы попали в дружественную станцию, то передаётся сообщение КонецИгры после которого остановятся все скрипты и клон снаряда также удалится.
Теперь игра полностью готова. Нажми на флажок и протестируй её.