"Информатика (в 2 частях)", Павлов Д.И., Полежаева О.А., Коробкова Л.Н. и др./ Под ред. Горячева А.В.
В игровой программе иногда нужно, чтобы один объект появлялся много раз: например, чтобы с неба падали мячи или на экране возникали враги. Для этого используют клоны — временные копии исходного объекта, которые создаются прямо во время работы игры. Клон получает внешний вид и программы объекта-оригинала, но может иметь свои координаты и самостоятельно выполнять команды. Создание клонов помогает сделать игру разнообразной без ручного добавления множества одинаковых объектов.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Объект — герой, предмет или другая сущность на сцене, у которой есть внешний вид и программы поведения. В Scratch объект часто называют спрайтом. Он нужен как основа для действий игры: объект может двигаться, реагировать на клавиши и взаимодействовать с другими объектами.
Клон — временная копия объекта, созданная во время выполнения программы. Клон получает костюмы, звуки и скрипты исходного объекта, но может иметь свои координаты, размер и направление. Это позволяет быстро получить много одинаковых участников игры, не создавая каждый объект вручную.
Событие «когда я начинаю как клон» — команда, запускающая отдельный сценарий для каждой созданной копии. Благодаря ей клон может сразу начать падать, двигаться, проверять столкновение или исчезать. Команда «создать клон» порождает копию, а «удалить этот клон» завершает её работу и освобождает сцену.
Сначала в проекте нужен объект-образец, например мяч или монета. Во время игры программа обращается к нему и создаёт клон, потому что заранее неизвестно, сколько копий понадобится игроку. После появления копия существует отдельно от образца, поэтому изменение её положения не переносит остальные объекты в ту же точку.
Команда создания клона сама по себе только добавляет копию на сцену. Чтобы она двигалась или выполняла полезную работу, для объекта составляют сценарий, начинающийся событием «когда я начинаю как клон». Такой сценарий запускается отдельно для каждого клона, поэтому одна и та же программа может управлять десятками одинаковых копий.
Часто создание помещают внутрь цикла с паузой. Пауза нужна, чтобы клоны появлялись не все одновременно: тогда мячики могут падать один за другим, а противники — возникать через разные промежутки времени. Если паузы нет, программа способна очень быстро создать слишком много копий и усложнить игру.
Клон можно настроить сразу после запуска: задать случайную координату, выбрать направление, изменить размер или установить скорость. Для различий между копиями применяют переменные, например «скорость» или «цвет». Если значение должно быть своим у каждого клона, переменную создают с параметром, доступным только для текущего объекта и его копий; общая переменная подходит для общего счёта.
Клон не должен существовать бесконечно, если он уже выполнил задачу. Например, пойманная монета или пуля, ушедшая за край сцены, должна выполнить «удалить этот клон». Это предотвращает накопление невидимых копий, из-за которого игра начинает работать медленнее.
| Команда или событие | Назначение | Пример применения |
|---|---|---|
| Создать клон [самого себя] | Создаёт новую копию объекта | Выпустить монету или пулю |
| Когда я начинаю как клон | Запускает сценарий каждой копии | Задать движение и реакцию |
| Удалить этот клон | Убирает текущую копию со сцены | Удалить предмет после столкновения |
Сначала найдите команду, которая порождает копию, затем определите событие, с которого начинается её жизнь. В конце сценария предусмотрите условие удаления: достижение края, столкновение или выполнение задания. Такая таблица помогает проверить, какая команда отвечает за появление, поведение и исчезновение объекта.
Условие. Нужно сделать игру, в которой сверху вниз падают монеты. Новая монета должна появляться каждые две секунды в случайном месте верхней части сцены, двигаться вниз и исчезать после достижения нижнего края или после касания игрока. Используем один объект «Монета», а остальные экземпляры создадим клонами.
Решение. Сначала отделим создание копий от их поведения: один сценарий будет регулярно порождать клоны, другой — запускаться у каждой новой монеты. Так легче изменить частоту появления, не переписывая движение. Затем зададим для каждой копии начальные координаты, чтобы монеты не накладывались друг на друга.
Важно, что команда удаления относится именно к текущей копии. Если вместо неё спрятать исходный объект, новые монеты могут перестать появляться или поведение проекта изменится. Проверять программу следует сначала с одной монетой, затем с несколькими: так легче понять, правильно ли работают координаты, столкновение и счёт.
Ответ. Игра решается двумя связанными сценариями: первый создаёт клоны через равные промежутки времени, второй задаёт каждой монете движение и удаляет её после события. Один объект-образец при этом может породить любое нужное число временных копий.
Создают много одинаковых объектов вручную. Так поступают, когда ещё не различают объект и его клон. Проверка простая: если внешний вид и поведение предметов одинаковы, попробуйте оставить один образец и добавить команду создания копии.
Не добавляют сценарий запуска клона. Копия появляется, но не двигается и не реагирует на игрока, потому что команда создания не описывает её дальнейшее поведение. Проверьте, есть ли у объекта событие «когда я начинаю как клон» и команды после него.
Забывают удалить ненужные копии. Игрок может не видеть монеты за краем сцены, но программа продолжает их обслуживать. Посчитайте, не растёт ли число копий во время долгой игры, и добавьте удаление при выходе за границу или после столкновения.
Используют одну общую переменную для личных свойств. Тогда изменение скорости одной копии меняет значение и для остальных. Проверьте область действия переменной: индивидуальные характеристики должны храниться отдельно у каждого клона.
Клоны связаны с алгоритмами, потому что их поведение задаётся последовательностью команд, условиями и циклами. События и сообщения помогают согласовать работу игрока, объекта-образца и его копий. Координаты, случайные числа и переменные позволяют распределять клоны по сцене, задавать им скорость и вести счёт.
23. Создаем новые объекты в ходе игры