Проект “Астероиды”

Разработаем классическую игру Астероиды (Asteroids) первая версия которой появилась ещё в 1979 году.

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

Начало работы

Открой файл asteroids-шаблон.sb2. Проект уже содержит необходимые спрайты, фон и переменные.

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

Нажми на зелёный флажок и проверь работу программы. Управляй кораблём с помощью клавиш WASD. Управление происходит не на прямую. Чем дольше ты держишь клавишу, тем быстрее корабль двигается в этом направлении. Чтобы затормозить, необходимо нажать противоположную клавишу, и держать её до тех пор, пока корабль не остановиться.

Телепортация из края экрана

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

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

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

Программируем снаряд

Выбери спрайт выстрел. Обрати внимание, что у этого спрайта есть своя переменная Я клон?. Она необходима для того, что бы можно было определить является ли спрайт оригиналом или клоном. Добавь спрайту следующий код:

После нажатия на клавишу q должен произойти выстрел. При этом направление полёта снаряда выбирается исходя из положения курсора мыши. После нажатия на кнопку выстрела снаряд полетит в сторону мыши.

Теперь создадим скрипт для клонов снаряда.

Снаряд, так же как и корабль, долетев до края сцены перемещается на противоположный её конец.

Сценарий для астероидов

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

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

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

Как только снаряд попал в астероид, он должен расколоться на две меньшие части

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

Если снаряд попадает в астероид мы изменяем счёт и количество попаданий в данный астероид. Если попаданий 4, астероид больше не будет делиться пополам. Размер клона уменьшается и затем создаётся два клона этого фрагмента.

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

Запусти проект и проверь его работу.

Добавляем таймер

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

Теперь игра закончится слишком быстро, так как начальный счёт равен 0. Выбери спрайт Корабль. Измени начальное значение счёта на число 10.

Столкновение с астероидом

Добавим сценарий для окончания игры. Если астероид врезается в корабль, игра должна закончится.

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

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

Игра полностью готова. Теперь необходимо протестировать её на наличие ошибок.

Ограничение на частоту выстрелов

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

Выбери спрайт Снаряд. Добавь переменную энергия.

Добавим скрипт который отвечает за восполнение энергии со временем если она израсходована:

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

Выстрел можно будет сделать только если у корабля есть энергия. После каждого выстрела текущие значение энергии уменьшается на 1.

Протестируй игру.

Создаём чит-код

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

Клавишу после нажатия на которую будет срабатывать чит-код выбери самостоятельно.