Блог онлайн школы Пиксель

Программирование для детей с нуля: разработка РПГ-игры в 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, воплощайте фантазии и создавайте захватывающие игры, за которыми можно весело проводить время вместе с друзьями.
Scratch для детей Бесплатные видеоуроки