Разработка игр на Scratch — занятие увлекательное. Платформа привлекательна тем, что можно создавать игры различных жанров. Например, РПГ-игры.
РПГ (RPG) расшифровывается как «role-playing game» — ролевая игра. В РПГ-играх на ПК пользователь берет под контроль героя или героиню с набором стандартных навыков, характеристик и умений.
Школа программирования для детей «Пиксель» рассказывает и показывает, как сделать РПГ-игру в Скретч. В финале материала — видеоурок по игре, так что рекомендуем прочитать до конца, затем посмотреть ролик.
РПГ (RPG) расшифровывается как «role-playing game» — ролевая игра. В РПГ-играх на ПК пользователь берет под контроль героя или героиню с набором стандартных навыков, характеристик и умений.
Школа программирования для детей «Пиксель» рассказывает и показывает, как сделать РПГ-игру в Скретч. В финале материала — видеоурок по игре, так что рекомендуем прочитать до конца, затем посмотреть ролик.
Подготовительный этап создания РПГ-игры в Scratch
По замыслу персонаж спасает принцессу, которая заблудилась в темном лесу.
Приступим к созданию игры. Для начала подготовим спрайты:
Приступим к созданию игры. Для начала подготовим спрайты:
- фон;
- игрок (2 костюма: мага и рыцаря);
- значок жизни;
- меню;
- спрайт мага, который будет кнопкой в меню;
- спрайт рыцаря, который будет кнопкой в меню;
- камень;
- дерево;
- житель;
- принцесса;
- враг (2 костюма летучей мыши: во втором нет крыльев для анимации взмаха);
- меч для атаки рыцаря;
- шар для атаки мага.

Выбор персонажа для РПГ-игры в Scratch
В меню можно выбрать героя, за которого будем играть. Выбор влияет на спрайт игрока и вид атаки. Для этого сделаем переменную «персонаж», которая равна 1, если это маг, и 2, если рыцарь. Соответственно, каждая кнопка отправляет сообщение «выбор 1» или «выбор 2».

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

Работа с кодом игрока в РПГ-игре на Scratch
Изначально игрок не виден. При выборе персонажа подбираем соответствующий костюм и задаем значение переменной:

Сделаем игроку управление — изменяем его положение в зависимости от нажатой кнопки в блоках «если»:

В каждый блок добавим проверку на соприкосновение со спрайтом камня. Он должен мешать идти, потому будем совершать движение в обратном направлении:

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

Создание наступления персонажа в игре на Scratch
Сперва пропишем атаку мечом, привяжем его к герою и скроем:

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

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

Работа с перемещением в РПГ-игре на Scratch
Мир должен быть большим, но на данный момент — только одна локация. Создадим передвижение игрока по миру.
Сформируем случайно генерируемые локации. Переход между ними действует так: игрок подойдет к краю текущего месторасположения и переместится на место с той стороны, с которой должен выйти на следующем экране. Старые элементы локации исчезнут, рандомно присоединятся новые.
Работать будем в коде игрока — создадим блок «отслеживание перехода» без привязки к обновлению экрана:
Сформируем случайно генерируемые локации. Переход между ними действует так: игрок подойдет к краю текущего месторасположения и переместится на место с той стороны, с которой должен выйти на следующем экране. Старые элементы локации исчезнут, рандомно присоединятся новые.
Работать будем в коде игрока — создадим блок «отслеживание перехода» без привязки к обновлению экрана:

Будем вызывать блок после проверки нажатия клавиш:

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

Генерация камней в РПГ-игре на Scratch
На каждом месте в случайном порядке располагаются деревья, камни, враги. При смене карты прежняя локация удалится, сгенерируется новая — это создаст бесконечный мир для игрока.
Для начала сделаем расположение камней на карте, будем работать в их скрипте.
Спрячем спрайт и начнем работу в блоке сообщения о смене карты. Помним, что при перемене карты нужно устранить старые спрайты, поэтому в цикле удаляем клоны. Потом в цикле со случайным значением от 1 до 5 создаем клоны, которые находятся в рандомных местах:
Для начала сделаем расположение камней на карте, будем работать в их скрипте.
Спрячем спрайт и начнем работу в блоке сообщения о смене карты. Помним, что при перемене карты нужно устранить старые спрайты, поэтому в цикле удаляем клоны. Потом в цикле со случайным значением от 1 до 5 создаем клоны, которые находятся в рандомных местах:

Генерация деревьев в игре на Scratch
Деревья располагаются на карте таким же образом.

Создание врага в РПГ-игре на Scratch
Враг — летучая мышь. Противник появляется на локации так же, как другие спрайты. Однако у нее свое поведение, и ее можно уничтожить:

Мышь летает по карте, пока не нападем на нее мечом или магией.
Создание жизней
У игрока 3 жизни. Когда они кончатся, игра будет завершена. Для этого зададим переменную «жизни», и в коде игрока поставим значение 5.
Отслеживать соприкосновение будем в отдельном блоке, так как необходимо совершить паузу между уроном в 1 секунду:
Отслеживать соприкосновение будем в отдельном блоке, так как необходимо совершить паузу между уроном в 1 секунду:

Также добавим проверку на окончание жизней. Если им пришел конец, остановим игру:

Отображение жизней в игре на Scratch
Нужно отобразить 3 сердечка на экране и уменьшать их количество при уроне.
При старте зададим положение сердечка и покажем число жизней.
При получении урона будем убирать предыдущие спрайты жизней и отрисовывать уже новое количество:
При старте зададим положение сердечка и покажем число жизней.
При получении урона будем убирать предыдущие спрайты жизней и отрисовывать уже новое количество:

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

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

Если попадается 1 число из 10, находим принцессу: таким образом она появится в лесу с вероятностью 10%.
Доработка игры на Scratch
Некоторые спрайты могут перекрываться другими, поэтому фон переместим на задний план:

А кнопки выбора героев — на передний:

И скроем переменные.
Проверяем результат:
Проверяем результат:



Для закрепления материала также доступен видеоурок по проектированию РПГ-игры в Скретч.
А еще на YouTube-канале школы «Пиксель» есть занимательный плейлист по творческому программированию и созданию игр на Scratch. В нем собраны инструкции на тему, как сделать в Скретч бота, гравитацию, магазин, платформер и многое другое.
Углубить знания по созданию игр для детей в Scratch можно на тематическом курсе от школы «Пиксель». Изучайте Scratch, воплощайте фантазии и создавайте захватывающие игры, за которыми можно весело проводить время вместе с друзьями.
Углубить знания по созданию игр для детей в Scratch можно на тематическом курсе от школы «Пиксель». Изучайте Scratch, воплощайте фантазии и создавайте захватывающие игры, за которыми можно весело проводить время вместе с друзьями.