Программирование для детей с нуля: разработка РПГ-игры в Scratch
Разработка игр на Scratch — занятие увлекательное. Платформа привлекательна тем, что можно создавать игры различных жанров. Например, РПГ-игры.
РПГ (RPG) расшифровывается как «role-playing game» — ролевая игра. В РПГ-играх на ПК пользователь берет под контроль героя или героиню с набором стандартных навыков, характеристик и умений.
Школа программирования для детей «Пиксель» рассказывает и показывает, как сделать РПГ-игру в Скретч. В финале материала — видеоурок по игре, так что рекомендуем прочитать до конца, затем посмотреть ролик.
Подготовительный этап создания РПГ-игры в Scratch
По замыслу персонаж спасает принцессу, которая заблудилась в темном лесу.
Приступим к созданию игры. Для начала подготовим спрайты:
фон;
игрок (2 костюма: мага и рыцаря);
значок жизни;
меню;
спрайт мага, который будет кнопкой в меню;
спрайт рыцаря, который будет кнопкой в меню;
камень;
дерево;
житель;
принцесса;
враг (2 костюма летучей мыши: во втором нет крыльев для анимации взмаха);
меч для атаки рыцаря;
шар для атаки мага.
Выбор персонажа для РПГ-игры в Scratch
В меню можно выбрать героя, за которого будем играть. Выбор влияет на спрайт игрока и вид атаки. Для этого сделаем переменную «персонаж», которая равна 1, если это маг, и 2, если рыцарь. Соответственно, каждая кнопка отправляет сообщение «выбор 1» или «выбор 2».
Кнопка будет прятаться при взаимодействии с ней, либо нажатии другой кнопки. Сделаем такой же код на второй кнопке, поменяв сообщения местами.
Также в начале будем демонстрировать заставку меню и прятать при сообщениях о выборе персонажа:
Работа с кодом игрока в РПГ-игре на Scratch
Изначально игрок не виден. При выборе персонажа подбираем соответствующий костюм и задаем значение переменной:
Сделаем игроку управление — изменяем его положение в зависимости от нажатой кнопки в блоках «если»:
В каждый блок добавим проверку на соприкосновение со спрайтом камня. Он должен мешать идти, потому будем совершать движение в обратном направлении:
Сразу добавим условия соприкосновения с противником и удара — будем отправлять соответствующие сообщения другим спрайтам:
Создание наступления персонажа в игре на Scratch
Сперва пропишем атаку мечом, привяжем его к герою и скроем:
Далее будем работать в блоке сообщения удара.
Проверим переменную, отвечающую за выбор персонажа, покажем спрайт и повернем его на 60 градусов, тем самым совершив удар мечом:
Перейдем к спрайту магического шара.
После проверки на героя ждем 0.5 секунд и создаем клон, который покажется в собственном блоке и от игрока полетит в сторону неприятеля:
Работа с перемещением в РПГ-игре на Scratch
Мир должен быть большим, но на данный момент — только одна локация. Создадим передвижение игрока по миру.
Сформируем случайно генерируемые локации. Переход между ними действует так: игрок подойдет к краю текущего месторасположения и переместится на место с той стороны, с которой должен выйти на следующем экране. Старые элементы локации исчезнут, рандомно присоединятся новые.
Работать будем в коде игрока — создадим блок «отслеживание перехода» без привязки к обновлению экрана:
Будем вызывать блок после проверки нажатия клавиш:
В блоке проверяем положение игрока. Если он подошел к краю, будем перемещать его в противоположный и передавать сообщение о смене карты:
Генерация камней в РПГ-игре на Scratch
На каждом месте в случайном порядке располагаются деревья, камни, враги. При смене карты прежняя локация удалится, сгенерируется новая — это создаст бесконечный мир для игрока.
Для начала сделаем расположение камней на карте, будем работать в их скрипте.
Спрячем спрайт и начнем работу в блоке сообщения о смене карты. Помним, что при перемене карты нужно устранить старые спрайты, поэтому в цикле удаляем клоны. Потом в цикле со случайным значением от 1 до 5 создаем клоны, которые находятся в рандомных местах:
Генерация деревьев в игре на Scratch
Деревья располагаются на карте таким же образом.
Создание врага в РПГ-игре на Scratch
Враг — летучая мышь. Противник появляется на локации так же, как другие спрайты. Однако у нее свое поведение, и ее можно уничтожить:
Мышь летает по карте, пока не нападем на нее мечом или магией.
Создание жизней
У игрока 3 жизни. Когда они кончатся, игра будет завершена. Для этого зададим переменную «жизни», и в коде игрока поставим значение 5.
Отслеживать соприкосновение будем в отдельном блоке, так как необходимо совершить паузу между уроном в 1 секунду:
Также добавим проверку на окончание жизней. Если им пришел конец, остановим игру:
Отображение жизней в игре на Scratch
Нужно отобразить 3 сердечка на экране и уменьшать их количество при уроне.
При старте зададим положение сердечка и покажем число жизней.
При получении урона будем убирать предыдущие спрайты жизней и отрисовывать уже новое количество:
Старт игры и победа
В начале игры житель дает игроку задание найти принцессу, которая потерялась в лесу. Необходимо убрать его при смене локации — давайте напишем для него код:
При выборе игрока житель передает задание, при перемене локации исчезает.
Теперь сделаем появление принцессы в лесу. Будем работать с ее кодом:
Если попадается 1 число из 10, находим принцессу: таким образом она появится в лесу с вероятностью 10%.
Доработка игры на Scratch
Некоторые спрайты могут перекрываться другими, поэтому фон переместим на задний план:
А кнопки выбора героев — на передний:
И скроем переменные.
Проверяем результат:
Для закрепления материала также доступен видеоурок по проектированию РПГ-игры в Скретч.
А еще на YouTube-канале школы «Пиксель» есть занимательный плейлист по творческому программированию и созданию игр на Scratch. В нем собраны инструкции на тему, как сделать в Скретч бота, гравитацию, магазин, платформер и многое другое.
Углубить знания по созданию игр для детей в Scratch можно на тематическом курсе от школы «Пиксель». Изучайте Scratch, воплощайте фантазии и создавайте захватывающие игры, за которыми можно весело проводить время вместе с друзьями.