Как создать игру Undertale на Scratch – урок для детей

от автора

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

«Андертейл» – компьютерная ролевая игра, увлекающая детей и подростков благодаря сюжету: задача игрока сводится к тому, чтобы выбраться из виртуального подземелья. Предстоит выдержать ряд битв с враждебно настроенными персонажами: их можно наказать либо пощадить. От выбора игрока зависит концовка, что делает увлекательным даже неоднократное прохождение.

Давайте вместе сделаем клон Undertale на языке «Скретч», в чем нам поможет одноименная среда для написания визуального кода. 

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

Делаем игру «Андертейл» в среде «Скретч»: туториал для новичков

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

Если первый шаг сделан, давайте начнем создавать собственный клон игры «Андертейл».

1. Создаем первую локацию и добавляем на нее объекты

Undertale – в первую очередь бродилка, поэтому нам предстоит сделать много локаций. Начнем с основной и создадим ее основные части. Давайте:

  1. Создадим базовый фон. Для этого выберем заливку и установим черный цвет.

  2. Сделаем импровизированные фиолетовые руины, как в оригинальной игре.

  3. Нарисуем дорогу с помощью более темного фиолетового цвета с обводкой.

Что должно получиться, показано на скриншоте. 

Теперь нам нужно убрать линии внутри дороги. Возьмем прямоугольник требуемого цвета и отключим обводку.

Изображение выглядит как текст, снимок экрана, монитор  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, монитор Автоматически созданное описание

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

Изображение выглядит как текст, снимок экрана, монитор  Автоматически созданное описание

Автоматически созданное описание

2. Создаем дополнительные локации

Нам необходимо сделать еще два фона. На них потребуется изобразить, показанные на скриншотах. 

Изображение выглядит как текст, снимок экрана, монитор  Автоматически созданное описание

Автоматически созданное описание

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

3. Рисуем новый фон для взаимодействия с монстром

Повторим частично знакомые шаги:

  1. Зальем рабочее поле черным цветом.

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

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

Должно получиться так, как показано на скриншоте.

Изображение выглядит как текст, снимок экрана, монитор  Автоматически созданное описание

Автоматически созданное описание

Важный нюанс: клеточки нужно дорисовать до конца. 

4. Приступаем к программированию РПГ на языке «Скретч»

Сначала создадим главного персонажа. Если отталкиваться от сюжета Undertale, то необходим ребенок. Основные шаги:

  1. Идем в библиотеку спрайтов.

  2. Выбираем нужный вариант. Пусть это будет персонаж Avery.

  3. Уменьшаем стандартный размер в соответствующей вкладке и устанавливаем значение на уровне 40.

Изображение выглядит как текст, снимок экрана, монитор  Автоматически созданное описание

Автоматически созданное описание

Продолжаем кодить и используем следующие команды:

  1. Когда флажок нажат, показаться.

  2. Задать HP значение 5.

  3. Переключиться на первый фон.

  4. Перейти в координаты -154 и -134, то есть на начало дорожки.

  5. Повторять всегда.

Цикл повторения будет содержать четыре условия. Вот они:

  1. Стрелка вверх нажата, изменить Y на 10.

  2. Стрелка вправо нажата, изменить X на 10.

  3. Стрелка вниз нажата, изменить Y на -10.

  4. Стрелка влево нажата, изменить X на -10.

Вот какой блочный код должен получиться: 

Изображение выглядит как текст, снимок экрана, внутренний, монитор  Автоматически созданное описание

Автоматически созданное описание

4.1. Создаем имитацию шагов

Avery мы выбрали не просто так: для этого персонажа предусмотрены готовые костюмы. До созданного цикла нужно вставить блок «изменить костюм на костюм a». Далее потребуется задать команды для костюмов b, c и d. Между ними необходимы паузы по 0,5 секунды.

Вот как будет выглядеть наш код:

Изображение выглядит как текст, снимок экрана, компьютер, внутренний  Автоматически созданное описание

Автоматически созданное описание

Нужно вынести новый блок из общего цикла и вставить в другой с условием повторения. 

Изображение выглядит как текст, снимок экрана, внутренний, компьютер  Автоматически созданное описание

Автоматически созданное описание

Теперь давайте вернемся к первой команде и создадим условие такого вида: если касается края, перейти на новую локацию второго фона и в координаты -207 и -2. 

Изображение выглядит как текст, снимок экрана, внутренний, компьютер  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний, компьютер Автоматически созданное описание

4.2. Рисуем и программируем деталь для телепортации на карту сражения

Вот какую деталь можно нарисовать: 

Изображение выглядит как текст, снимок экрана, монитор, другой  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, монитор, другой Автоматически созданное описание

Нужен код с командой «когда флажок нажат, спрятаться». Нарисованная деталь должна появляться после попадания на вторую локацию, поэтому идем в программу для персонажа и в конец вставляем сообщение «ключ». 

Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание

Но и сам условный телепортатор нуждается в визуальном коде. Вот что нужно написать: когда получено сообщение, показаться и перейти в одно из ответвлений дороги с координатами 137 и 112. 

Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание

Переходим в скрипт для Avery и создаем условие: если касается ключа, передать сообщение «игра». 

Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание

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

Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание
Изображение выглядит как текст, снимок экрана, внутренний, компьютер  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний, компьютер Автоматически созданное описание

4.3. Создаем новый спрайт – пиксельное сердце

Перед тем как сделать игру «Андертейл» в среде «Скретч», нужно уточнить следующий момент: во время битв главный персонаж становится сердцем. Его нам и потребуется создать. Выбираем квадраты красного цвета и рисуем. 

Изображение выглядит как текст, снимок экрана, монитор  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, монитор Автоматически созданное описание

Не обойтись без кода. Нужна такая команда: когда флажок нажат, спрятаться, когда получено сообщение «игра» – показаться и перейти в координаты 4 и -97, включить четвертый фон. 

Размер сердечка установим на уровне сорока единиц. 

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

Вот какие команды нужны:

  1. Если нажата клавиша W, изменить Y на 10.

  2. Если нажата клавиша D, изменить X на 10.

Аналогично поступаем с S и A, пишем: изменить Y на -10 и X – на столько же соответственно. 

Временно поместим изменение фона внутрь цикла, а позже – уберем. 

Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание

4.4. Делаем монстра в виде лягушки

Теперь пришло время создать монстра. Начинать будем с рисования:

  1. Возьмем белый овал и с помощью изменения точек уберем нижнюю часть.

  2. Добавим два круга – импровизированные глаза.

  3. Нарисуем тело, изменив верхнюю часть посредством точек.

  4. Сделаем два овала в виде ног с дополнительными овальными элементами – лапками – на концах.

  5. Добавим дугу на месте живота.

Вот что должно получиться:

Теперь нам потребуется ластик. Сделаем его тонким и установим размер на уровне десяти: это поможет аккуратно нарисовать рот и глаза для импровизированного монстра. 

Изображение выглядит как текст, снимок экрана, монитор  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, монитор Автоматически созданное описание

Следующий шаг – выделение и объединение частей тела лягушки. Установим ее размер на уровне 50, перетащим монстра в поле с ранее созданными зелеными клетками.

Осталось написать блочный код. Вот какие команды нужны:

  1. Когда флажок нажат, спрятаться.

  2. Когда я получу сообщение игра, показаться и перейти в координаты 1 и 66.

  3. Повторять цикл всегда, изменить Y на 1 и ждать 0,2 секунды, изменить Y на -1 и ждать еще 0,2 секунды. 

Благодаря коду наша лягушка сможет двигаться.

4.5. Рисуем и программируем снаряд

Снаряд в нашем проекте – «опасный враг»: от него потребуется уклоняться. Создадим соответствующий спрайт. 

Для рисования понадобится белый кружок, а для кода – команда «когда флажок нажат, спрятаться». Дополнительно напишем: когда я получу сообщение «игра», показаться и перейти в координаты 39 и 78. Другие важные блоки:

  1. Повторять цикл 10 раз.

  2. Создать собственный клон и перейти в случайные координаты. Выбирать их будет генератор случайных чисел. Диапазоны: по X -2–253, по Y – от -173 до -63.  

Далее прописываем дополнительную команду: плыть одну секунду к сердечку. А еще пишем следующее: когда я начинаю как клон, при касании первого спрайта изменить HP на -1 и удалить клон, иначе просто удалить. 

Теперь изменим время, отведенное для движения снаряда Вместо одной секунды устанавливаем значение на уровне 0,8. 

Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание

5. Делаем финальные штрихи

Поменяем скорость сердца: вместо десяти установим значение на уровне пяти. 

Теперь перейдем к коду, написанному для персонажа, и добавим условие в конец. Его вид такой: если HP = 0, мы проиграли. Игра останавливается. 

Давайте вспомним, сколько было фонов, чтобы понять, что остался один неиспользованный. Он пригодится на случай успешной импровизированной битвы с монстром. Дополним команду для снаряда сообщением «фон 3» так, как показано на скрине.

Также изменим скрипт персонажа и напишем следующее: когда я получу сообщение «фон 3», показаться и перейти в координаты -207 и -2. Дополнительно потребуется задать переключение условной локации соответствующим образом. 

Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание

Все прочие элементы должны пропадать. Запрограммировать это можно с помощью одной и той же команды: когда я получу сообщение «фон 3», спрятаться. 

Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание
Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание
Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание
Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание
Изображение выглядит как текст, снимок экрана, внутренний, несколько  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний, несколько Автоматически созданное описание

Вернемся в код для сердечка и достанем конструкцию «переключить фон 4» из цикла, чтобы можно было вернуться на третью локацию.

Изображение выглядит как текст, снимок экрана, внутренний  Автоматически созданное описание

Изображение выглядит как текст, снимок экрана, внутренний Автоматически созданное описание
Изображение выглядит как текст, снимок экрана, внутренний, несколько  Автоматически созданное описание

Автоматически созданное описание

Так, наша инструкция подошла к концу. Надеемся, что все получилось!

Если возникли ошибки, советуем посмотреть обучающее видео: оно поможет разобраться, как сделать РПГ в среде «Скретч» на примере Undertale. 

А мы хотим попросить рассказать, удалось ли написать визуальный код по инструкции. Если нет, скажите, с чем возникли трудности? Делитесь мнениями, оставляйте комментарии: это поможет нам делать больше информативных и простых уроков для детей.

Материал подготовлен школой программирования Pixel. Мы учим детей, увлеченных IT, писать код, создавать трехмерные модели, скриптить сайты и не только. Если хотите углубиться в программирование на Scratch, приходите к нам на курсы для младших и для старших учеников.


ссылка на оригинал статьи https://habr.com/ru/articles/845106/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *