На Горох
Информатика

23. Создаем новые объекты в ходе игры

"Информатика (в 2 частях)", Павлов Д.И., Полежаева О.А., Коробкова Л.Н. и др./ Под ред. Горячева А.В.

Объяснение темы В оглавлении: 23. Создаем новые объекты в ходе игры

Кратко о теме

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

Объяснение темы

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

Определения и обозначения

Объект — герой, предмет или другая сущность на сцене, у которой есть внешний вид и программы поведения. В Scratch объект часто называют спрайтом. Он нужен как основа для действий игры: объект может двигаться, реагировать на клавиши и взаимодействовать с другими объектами.

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

Событие «когда я начинаю как клон» — команда, запускающая отдельный сценарий для каждой созданной копии. Благодаря ей клон может сразу начать падать, двигаться, проверять столкновение или исчезать. Команда «создать клон» порождает копию, а «удалить этот клон» завершает её работу и освобождает сцену.

Как это устроено

Сначала в проекте нужен объект-образец, например мяч или монета. Во время игры программа обращается к нему и создаёт клон, потому что заранее неизвестно, сколько копий понадобится игроку. После появления копия существует отдельно от образца, поэтому изменение её положения не переносит остальные объекты в ту же точку.

Команда создания клона сама по себе только добавляет копию на сцену. Чтобы она двигалась или выполняла полезную работу, для объекта составляют сценарий, начинающийся событием «когда я начинаю как клон». Такой сценарий запускается отдельно для каждого клона, поэтому одна и та же программа может управлять десятками одинаковых копий.

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

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

Клон не должен существовать бесконечно, если он уже выполнил задачу. Например, пойманная монета или пуля, ушедшая за край сцены, должна выполнить «удалить этот клон». Это предотвращает накопление невидимых копий, из-за которого игра начинает работать медленнее.

Команды создания и удаления клонов

Команда или событиеНазначениеПример применения
Создать клон [самого себя]Создаёт новую копию объектаВыпустить монету или пулю
Когда я начинаю как клонЗапускает сценарий каждой копииЗадать движение и реакцию
Удалить этот клонУбирает текущую копию со сценыУдалить предмет после столкновения

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

Разбор задач

Условие. Нужно сделать игру, в которой сверху вниз падают монеты. Новая монета должна появляться каждые две секунды в случайном месте верхней части сцены, двигаться вниз и исчезать после достижения нижнего края или после касания игрока. Используем один объект «Монета», а остальные экземпляры создадим клонами.

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

  1. У объекта «Монета» создаём сценарий запуска игры и помещаем в него бесконечный цикл.
  2. Внутри цикла выбираем случайную координату x, задаём координату y у верхнего края сцены и выполняем команду создания клона.
  3. После создания добавляем паузу в две секунды, чтобы поток монет не был слишком плотным.
  4. Для события «когда я начинаю как клон» задаём повторение: копия меняет y на небольшое отрицательное значение и проверяет столкновение с игроком.
  5. Если монета коснулась игрока, увеличиваем счёт и удаляем текущий клон.
  6. Если координата y стала меньше нижней границы сцены, также удаляем клон, потому что он больше не виден и не нужен.

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

Ответ. Игра решается двумя связанными сценариями: первый создаёт клоны через равные промежутки времени, второй задаёт каждой монете движение и удаляет её после события. Один объект-образец при этом может породить любое нужное число временных копий.

Типичные ошибки

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

Не добавляют сценарий запуска клона. Копия появляется, но не двигается и не реагирует на игрока, потому что команда создания не описывает её дальнейшее поведение. Проверьте, есть ли у объекта событие «когда я начинаю как клон» и команды после него.

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

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

Связь с другими темами

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

Что запомнить

  • Клон — временная копия объекта, созданная во время работы игры.
  • Событие «когда я начинаю как клон» запускает поведение каждой копии.
  • Цикл с паузой создаёт клоны постепенно, а не все сразу.
  • Клону можно задать собственные координаты, направление, размер и скорость.
  • Ненужную копию удаляют командой «удалить этот клон».
  • Общие переменные подходят для общего состояния игры, а личные — для свойств отдельного клона.

Спросить по теме параграфа

23. Создаем новые объекты в ходе игры

Учебник

Оглавление →
Предмет
Информатика
Учебник
"Информатика (в 2 частях)", Павлов Д.И., Полежаева О.А., Коробкова Л.Н. и др./ Под ред. Горячева А.В.