Как сделать препятствия в скретч

Программирование мини-игры в программе Скретч

На свете существуют множество языков программирования, но программирование для детей проще начинать с программ, которые предполагают создание игровой ситуации с героями или объектами, которые двигаются, меняются или взаимодействуют. К таким программам относятся ПервоЛого и ЛогоМиры, а также программа Скретч (Scratch), бесплатно распространяемая для любой операционной системы. Сайт находится по адресу http://scratch.mit.edu. С января 2019 года разработчики выпустили новую версию 2.0. Она немного отличается от предыдущих версий.

В основе Scratch лежит графический язык программирования. Для того чтобы создать скрипт (программу для каждого объекта) нужно просто совместить графические блоки вместе, перетаскивая готовые блоки из левого поля в поле создания скрипта (программы).

Блоки разбиты на несколько типов:

Блок «Перо» в новой версии надо добавлять из меню «дополнительные блоки».

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

Во многих компьютерных играх игровое поле представляет собой площадку, разбитую на квадраты (как шахматная доска), и требуется собрать какие-либо предметы – это могут быть яблоки, монеты, звезды или что-то другое. Для краткости будем называть эту игру «Собери» (презентация).

Для создания игры нам необходимо проделать несколько этапов:

1 этап. Создание игрового поля

Для создания игрового поля мы должны войти в меню «Сцена», вкладка «Фоны» и с помощью инструментов для рисования «прямоугольник» и «линия» создать поле 8х8 клеток. (рис. 1). Такого размера вполне достаточно для создания первой игры. При желании можно добавить какой-либо текст (кнопка Т).

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Рис. 1. Создание игрового поля.

2 этап. Расстановка игровых объектов

На втором этапе мы расставляем объекты разных видов (рис. 2 и 3). Для этого используем добавление спрайтов из библиотеки. Объекты в нашей игре будут двух видов – те, которые по условию надо собрать (например, яблоки), и те, которые будут являться препятствиями. Количество объектов можно задавать самостоятельно. Рекомендую размер объектов уменьшить до 50.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Рис. 2. Добавление объектов на игровое поле.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Рис. 3. Добавление объектов-препятствий на игровое поле.

3 этап. Программирование «героя»

В качестве героя можно оставить исходного спрайта-котенка под именем «Спрайт1». При желании можно выбрать (назначить) «героем» любого другого. Имя спрайта также можно изменить.

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Рис. 4. Задание начальной координаты для спрайта.

При необходимости можно задать и начальное направление – например, «повернуться в направлении 90».

Далее для того, чтобы наш спрайт ходил сразу по клеткам, мы должны запрограммировать кнопки управления его передвижением (стрелки вверх, влево, вправо, вниз), которые удобно расположены на клавиатуре.

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Рис. 5. Программирование управляющих кнопок (стрéлок).

Этап 4. Программирование собираемых объектов

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Рис. 6. Команда для собираемых объектов.

Чтобы объекты можно было «восстановить» в начале игры задаем дополнительную команду:

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Рис.7. Команда для «восстановления» объектов.

Эти команды надо задать для каждого собираемого объекта (яблока, монеты или звезды).

Этап 5. Программирование препятствий

На игровом поле должны также присутствовать объекты, которые будут усложнять игру, т.е. являться препятствиями. Чтобы они могли взаимодействовать с героем, когда он попадает на соответствующую клетку, необходимо им также задать небольшое движение (аналогично собираемым объектам).

Взаимодействие с героем можно задавать по-разному: препятствие может «взрываться», «переворачиваться» (т.е. изменить свой костюм), выдавать сообщение «Ты проиграл» или «Здесь ходить нельзя» и т.д. Можно задать команду, которая будет перемещать героя в начало игры, т.е. в исходную точку. Варианты могут придумать сами дети. В начале игры также надо вернуть этим объектам исходный костюм.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Рис. 8, 9. Программирование препятствий.

Этап 6. Программирование кнопки финиш

По желанию можно создать кнопку «Финиш» и поместить ее в конце игрового поля. Кнопка «Финиш» программируется аналогично предыдущим объектам. Отличие будет в тех командах, которые будут выполняться при реакции на прохождение Спрайта. Например, можно задать «Говорить «Ты победил!» или «Переходи на второй уровень» и при этом кнопка может менять цвет или мигать и т.д. Здесь дети могут использовать свою фантазию и желание.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Рис. 10. Изменение кнопки «Финиш».

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Рис. 11. Программа для кнопки «Финиш».

Заключение

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

Scratch действительно относится к группе мультимедийных развивающих сред программирования.

Источник

Как сделать прыжок в scratch

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

ВНИМАНИЕ!
Разрабатывая бесплатный курс по детскому программированию в scratch 2 я подготовил 4 варианта прыжка для персонажа с кодом разного уровня сложности. Описание этой статьи относится к 3 уровню сложности. Более простые варианты запрограммирования прыжковых навыков объекта смотрите по ссылкам ниже:

Так же рекомендую ознакомиться с бесплатными уроками по Скретч 2 на другие тематики в разделе Детское программирование (перейти). Ну и конечно я буду очень благодарен за финансовую помощь! Ее вы можете оказать переводом на СберБанк Онлайн по телефону 8-977-915-25-76 или на Яндекс.Деньги по кнопке слева!

Пошаговая инструкция по программированию прыжка у персонажа в Скрейтч

Шаг первый. Начнем с управления и разместим программный код под блоком начинающем работу после нажатия на зеленый флажок. Далее заведите переменную (заходим в блок Переменные), переназовите ее и задайте значение равное 0 (обнуляем значение переменной перед запуском программы), как показано на рисунке ниже:

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Шаг третий. Назначаем кнопку для прыжка через условие в команде Если … То …

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Шаг четвертый. Задаем значение переменной — Скорость прыжка равное 20 (с этим параметром можно поиграться и посмотреть как измениться скорость прыжка спрайта при изменении значения переменной)

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Шаг пятый. Определяем высоту прыжка персонажа в игре и делаем это за счет добавления цикла повторить несколько раз. Рисунок ниже.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Шаг шестой. Добавляем программный код, который изменяет положение персонажа игры по высоте

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

Источник

Публикации сообщества

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Шаг за шагом моделируем в Scratch гармонические колебания и упругое взаимодействие объектов

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

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

Подготовка

Мы будем использовать визуальную среду Scratch3. Онлайн-редактор можно открыть по следующей ссылке.

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

Этап 1. Воссоздаём гармонические колебания и рисуем синусоиду

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Давайте смоделируем такую систему в Scratch. Создайте новый проект, удалите из него спрайт кота, добавьте подходящий новый спрайт. Пусть это будет «Ball» из библиотеки спрайтов. Кроме того, в библиотеке фонов есть полезное для нас изображение с именем «Xy-grid», установите этот рисунок как фон, выбрав объект Сцена.

Выберите снова спрайт «Ball», переместите его в центр экрана при помощи блока «перейти в x: (0) y: (0)». Переименуйте, назвав «Мяч».

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Для наглядности и гибкости проекта создайте переменные со следующими именами: «скорость», «ускорение», «масса», «жёсткость» и «деформация». Все они должны быть локальными, при создании укажите опцию «только для этого спрайта». Это позволит в нам в будущем иметь в проекте несколько спрайтов, работающих сходным образом.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Следует отметить, что характеристики «жёсткость» и «деформация» относятся не к самому мячу в нашей модели, а к тем условным «пружинам», на которых мяч «подвешен». Произведение жёсткости на деформацию пружины (пружин) определяет силу, которая действует на мяч.

Соберите следующий скрипт.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Запустите программу. Что произошло? Ровно ничего, и это вполне естественно. Мяч находится в точке равновесия и его начальная скорость равна нулю, поэтому он и не стал двигаться. Поменяйте начальное положение мяча, отредактировав значение X в блоке «перейти в. «.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Однако картина может быть ещё нагляднее, если заставить мяч рисовать график своих перемещений. Сделать это несложно. Понадобятся блоки из расширения «Перо», которое можно добавить кнопкой в левом нижнем углу экрана.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

К «шапочке» (определению) блока добавьте скрипт:

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Полный набор скриптов для спрайта «Мяч» теперь выглядит так.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Значения переменных, отображаемые на сцене, нам будут мешать. Снимите маркеры, чтобы спрятать их.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Запустите программу. Теперь мяч перемещается сверху вниз во время колебаний, и за ним остаётся след синусоидальной формы.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

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

Создайте две глобальных переменных (которые будут доступны всем спрайтам) с именами «показатель1» и «показатель2». Добавьте в скрипт мяча блоки, задающие значения этих переменных на основе скорости и ускорения мяча.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Красная стрелка будет рисовать красным пером график изменения значения переменной «показатель1».

Сделайте дубль этого спрайта, отредактируйте цвет стрелки и цвет пера. Замените переменную «показатель1» переменной «показатель2».

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Файл с готовым проектом: этап1.sb3

Этап 2. Учитываем силы трения и сопротивления

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

Можно уменьшать скорость движения тремя разными способами:

Мы введём три коэффициента для каждого вида сопротивления, чтобы наша модель была универсальной. Если все три коэффициента равны нулю, происходят незатухающие колебания.

Наш проект разрастается, для сохранения наглядности разобьём его на блоки с осмысленными названиями. Теперь набор скриптов должен выглядеть так.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Запустите проект, чтобы проверить, что он работает и в таком виде.

Добавьте новый блок «учесть сопротивление» и поменяйте значения «к0», «к1» и «к2». Изменившаяся часть набора скриптов:

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

Обратите внимание, что период колебаний мяча не зависит от их амплитуды.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Файл с готовым проектом: этап2.sb3

Этап 3. Свободное движение по инерции с повторяющимися упругими столкновениями

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

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

Существующие коэффициенты «к0», «к1» и «к2» будем использовать для учёта возможного сопротивления движению во время свободной фазы. Давайте для начала условимся, что фаза свободного движения проходит без какого-либо трения и без сопротивления воздуха. Во время контакта мяча с левой или правой границей будем использовать «кПрав0», «кПрав1», «кПрав2», «кЛев0», «кЛев1» и «кЛев2». Кроме того, жёсткость левой и правой границы может быть разной, поэтому теперь у нас будет две переменной вместо одной: «жёсткостьПрав» и «жёсткостьЛев».

Создайте все новые переменные, они должны быть локальными. Теперь необходимо доработать набор скриптов спрайта «Мяч».

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Переименуйте блок «пересчитать скорость», дайте ему название «пересчитать скорость и учесть сопротивление». Доработайте скрипт.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Остальной набор скриптов:

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Запустите программу. График движения мяча влево-вправо теперь выглядит как пила, и можно заметить, что отскоки от правой границы происходят резче, чем от левой.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Файл с готовым проектом: этап3.sb3

Этап 4. Изменение скорости мяча при столкновении с движущимся массивным препятствием

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

Создайте спрайт с помощью инструмента «Нарисовать».

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Костюмом этого спрайта должна быть тонкая вертикальная линия от верхнего до нижнего края поля редактирования. Её можно нарисовать, например, инструментом «Прямоугольник» с нулевой толщиной контура.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Ширина линии 4 пикселя, но нам надо знать и ширину мяча, чтобы определить размер области свободного перемещения.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Осталось добавить в основной скрипт мяча одну строку. Числа 4 и 46 обозначают ширину линии и ширину мяча.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Добавьте этот блок в основной скрипт спрайта «Мяч». Теперь скрипт выглядит так.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Запустите программу, проверьте, что будет происходить, если в момент касания отодвигать препятствие от мяча, или напротив, двигать навстречу.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

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

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

Файл с готовым проектом: этап4.sb3

Этап 5. Столкновение двух движущихся объектов на плоскости

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

Нам понадобится большое количество второстепенных переменных для расчётов. В целом будет проще начать «с чистого листа».

Создайте в среде Scratch новый проект, удалите спрайт кота. Добавьте уже знакомый нам спрайт «Ball». Нам надо будет отредактировать его костюмы.

Удалите все костюмы, кроме синего и зелёного («ball-b» и «ball-d»). Для упрощения расчётов воспользуемся маленькой хитростью: если сделать размер изображения равным 100×100 пикселей, тогда не придётся пересчитывать проценты в пиксели. Блок «Размер», возвращающий масштаб отображения спрайта, можно будет использовать как диаметр мяча.

Увеличьте размер костюма «ball-b» инструментом «выбор» так, чтобы он стал равен 100×100. Затем передвиньте костюм в центр. В графическом редакторе Scratch3 сделать это легко: разработчики позаботились о том, чтобы изображение «прилипало» к центральной точке.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Повторите операцию для зелёного костюма «ball-d». Теперь оба костюма имеют размер 100×100.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Вначале мы создадим все скрипты для спрайта «Синий», а затем сдублируем их в спрайт «Зелёный» и немножко подправим.

Первым делом необходимо создать набор переменных, которые потребуются нам для расчётов. Очень важно, чтобы все переменные были локальными («только для этого спрайта»), в противном случае проект будет работать неправильно, и будет сложно понять, почему.

Создайте локальные переменные «масса», «скорость», «sin_Dir», «cos_Dir», «dfrm», «dir_to_object», «dX», «dY», «vX», «vY» и «tmp».

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Ниже приведены необходимые скрипты, которые следует создать. Для подробного объяснения, как они работают, потребовалось бы много времени. Укажем лишь, что в программе осуществляется пересчёт линейной скорости и направления движения мяча в горизонтальную и вертикальную составляющую, а затем обратно. Кроме того, можно менять масштаб отображения спрайта и регулировать тем самым его условную массу (при масштабе 100 масса равна единице).

При возникновении проблем рекомендуется отлаживать программу по частям. Например, можно отключить скрипт, отвечающий за проверку столкновений с зелёным мячом. В этом случае синий будет игнорировать наличие другого мяча и отскакивать лишь от границ сцены (либо от границ меньшей области на сцене, если мы захотим). Удобнее работать так: первым делом создать все пользовательские блоки с пустыми поначалу определениями, а затем добавлять скрипты, «подклеивая» и к «шапочкам» (заголовкам). Неважно, что тот или иной блок ещё «пустой», скрипт с его использованием уже можно собирать.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Блоки «пересчёт скорости при столкновениях» и «проверка столкновений с границами»:

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Блоки «скорость и направление в vX и vY» и » vX и vY в скорость и направление»:

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

После сборки всех скриптов и проверки корректности их работы следует сдублировать их в спрайт «Зелёный». Для этого надо «зацепить» каждый скрипт мышкой и «бросить» его на иконку спрайта «Зелёный» (в этот момент она начнёт покачиваться).

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Внимательно проверьте, что удалось сдублировать все скрипты и нет лишних дублей.

Осталось поправить блок «проверка столкновений с другим мячом», заменить везде «Зелёный» на «Синий». Будьте внимательны, при этой процедуре зачастую меняется и название блока «размер от ( )» (например, на «положение X от ( )»). Блок «проверка столкновений с другим мячом» спрайта «Зелёный» должен выглядеть в итоге так.

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

Можно также несколько поменять размер одного из мячей или обоих. Запустите программу. Движение мячей по сцене должно выглядеть примерно так:

Как сделать препятствия в скретч. Смотреть фото Как сделать препятствия в скретч. Смотреть картинку Как сделать препятствия в скретч. Картинка про Как сделать препятствия в скретч. Фото Как сделать препятствия в скретч

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

Файл с готовым проектом: этап5.sb3

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

Источник

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

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