Найти в Дзене

Проект "Столкновения". Сохраняем результаты (тут интересно!). Snap4Arduino #4_5

Продолжим. По сути, в прошлый раз мы практически закончили проект. Мы проделали большую работу. И вот теперь внимание! Плодами нашего труда можно будет пользоваться, словно элементами конструктора, собирая из готовых спрайтов и блоков новые проекты. Это очень удобные инструменты в Snap4Arduino. Для пользования созданными программными компонентами не обязательно даже чётко понимать, как именно они работают. Например, мы можем кому-нибудь предоставить файлы с экспортированными спрайтами, он придумает дизайн игрового задания и разместит все объекты, после чего передаст кому-то третьему со словами: "Составь такой алгоритм, чтобы робот, перемещаясь по полю, выполнил своё задание". Итак, приступим. Вы уже сохраняли проект в "целом" виде на жёсткий диск. Напомним, что следует задать имя и выбрать "Computer". Полученный файл имеет расширение "xml" Теперь потренируемся и сохраним ещё и отдельные спрайты "Робот1" и "Бочка1", поскольку они подготовлены нами для самостоятельной работы в любом нов

Продолжим. По сути, в прошлый раз мы практически закончили проект.

Мы проделали большую работу. И вот теперь внимание! Плодами нашего труда можно будет пользоваться, словно элементами конструктора, собирая из готовых спрайтов и блоков новые проекты. Это очень удобные инструменты в Snap4Arduino.

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

Итак, приступим. Вы уже сохраняли проект в "целом" виде на жёсткий диск. Напомним, что следует задать имя и выбрать "Computer". Полученный файл имеет расширение "xml"

Теперь потренируемся и сохраним ещё и отдельные спрайты "Робот1" и "Бочка1", поскольку они подготовлены нами для самостоятельной работы в любом новом окружении и содержат как добавочные элементы (захваты в роботе) так и скрипты. Щёлкните правой кнопкой мыши по спрайту и воспользуйтесь контекстным меню, выбрав там экспорт.

-2

При экспорте спрайта "Робот1" в файл будут автоматически добавлены и спрайты "Захват1" и "Захват2".

Файлы экспорта, содержащие спрайты, тоже получают расширение "xml". Рекомендуется в имя файла включать упоминание о том, что это именно спрайт, а не целый проект.

-3

Так постепенно будет создаваться ваша коллекция спрайтов, по сути, библиотек. В любой новый частично или полностью созданный проект можно будет добавить готовые спрайты (а также блоки, см. ниже) командой "Импорт".

-4

Следует помнить о том, что, если при импорте выбрать файл, содержащий не спрайт или библиотеку блоков, а обычный проект, прежний проект, открытый в среде Snap4arduino, будет без предупреждений заменён новым. Рекомендуется сохранять результаты своей работы перед попыткой импортировать дополнительные объекты.

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

Давайте это сделаем. Создадим универсальный блок, возвращающий список (с типом "Генератор значений") и названием "разность_множеств". Не обязательно собирать его полностью заново, можно просто скопировать и немного поправить скрипт блока "касается_препятствия".

-5

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

-6

При этом в наших проектах такой элемент работает уже давно и на самых разных множествах (см. рис.)

-7

Как видите, блок работает независимо от типа элементов. Точно таким же образом при необходимости можно создать "объединение_множеств" и "пересечение_множеств".

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

-8

Можно выбрать именно те, которые мы хотим сохранить в отдельном xml-файле.

Можно так же воспользоваться контекстным меню (щелкнуть по блоку правой клавишей мыши) и экспортировать конкретно этот скрипт.

-9

Итоги проекта.

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

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

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

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