Найти в Дзене

mBot2 #25. Игровой проект "Играем в мяч". Часть 1.

Сегодня начнем новую серию материалов, посвященную игровым проектам с использованием mBot2. При этом их можно условно разделить на варианты, когда робот используется в качестве пульта управления неким игровым процессом, или другим роботом, и варианты использования собственно мобильных способностей роботов в некоей игровой ситуации (эстафеты, робот-тренер и спортсмен, "паровозик", танцы и т.д.). Но начнем мы с проектов первого варианта. Именно на них удобно изучать различные датчики и элементы управления робота. Ну а играть ребятам нравится, так что в процессе создания увлекательного проекта они "незаметно" изучают многие важные вопросы. Так же интересно соединение виртуальности и реального "железа", при котором виртуальные персонажи подчиняются управляющим сигналам из реального мира. По сути, любую из игр, которые рассматриваются в нашем разделе игр в Scratch 3 можно переделать в вариант управления с помощью робота. Можно использовать джойстик робота, можно применить гироскоп и управля
Оглавление

Сегодня начнем новую серию материалов, посвященную игровым проектам с использованием mBot2. При этом их можно условно разделить на варианты, когда робот используется в качестве пульта управления неким игровым процессом, или другим роботом, и варианты использования собственно мобильных способностей роботов в некоей игровой ситуации (эстафеты, робот-тренер и спортсмен, "паровозик", танцы и т.д.).

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

Так же интересно соединение виртуальности и реального "железа", при котором виртуальные персонажи подчиняются управляющим сигналам из реального мира. По сути, любую из игр, которые рассматриваются в нашем разделе игр в Scratch 3 можно переделать в вариант управления с помощью робота. Можно использовать джойстик робота, можно применить гироскоп и управлять движением персонажа, наклоняя робота (в том же проекте "Змейка", например). Мы же сегодня рассмотрим необычный вариант управления - с помощью датчика освещенности, уже присутствующего на роботе mBot2. Для таких проектов оптимально подходит режим "онлайн" (интерактивный), все равно мы рядом с экраном и провод не будет препятствием. Но, при желании, можно использовать и беспроводное соединение.

Введение. Постановка задачи.

Приступим. Итак, задача: наш игровой персонаж в среде mBlock5 (например, спрайт Panda) будет перемещаться вверх-вниз по экрану, отбивая летающий мячик. Движением будем управлять, перекрывая и регулируя световой поток рукой над датчиком освещенности mBot2. Далее могут быть варианты - например, мячик может просто отлетать от стен при соударении, получится вариант тренировки в сквош, где за отбитый мяч дают очки, за пропущенный снимают. Но мы сделаем вариант сложнее, добавив второй персонаж, который будет управляться автоматикой программы.

Можно посмотреть видео - как будет выглядеть готовый проект.

Этап 1. Соединяем движение персонажа с показаниями датчика освещенности.

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

Запускаем mBlock5 и переходим на вкладку Персонажи. Там уже ждет Panda.

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

  • Переходим на вкладку Фоны, жмем плюсик у белого фона (Количество костюмов), переходим в раздел Сетки.

Выбираем Grid 2 и перед нами координатное поле будущей игры.

-2

Поскольку наша панда будет смещаться только вниз-вверх, то интересуют нас координаты по Y (от -180 до 180).

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

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

Этап 2. Снимаем показания датчика освещенности и превращаем их в координаты.

Сама постановка вопроса - как посмотреть на показания датчика mBot2 в среде mBlock3 - уже интересный проект, который можно предложить ребятам реализовать самостоятельно. Вариантов может быть несколько, включая отображение показаний на встроенном экране самого робота. Один из простых вариантов, который мы используем чаще всего - посмотреть на данные с датчика, присвоив их некоторой переменной с включенным режимом видимости.

Переходим на вкладку Устройства среды mBlock5, где уже есть mBot2 (или добавьте его, если там пусто). Создадим переменную, например назовем ее onboardLight. Причем переменную создаем "Для всех персонажей", т.к. планируем использовать ее для обмена данными между разными объектами. Раздел Переменные - Создать переменную.

-3

Не забудьте оставить галочку видимости переменной.

-4

Собираем простую программу для mBot2:

-5

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

-6

В нашем варианте условий освещенности получилось от 0 (свет перекрыт совсем) и до 53-55 при открытой освещенности.

Причем верхние цифры все время изменяются, "скачут", 53...55...53...54...

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

Например так:

-7

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

На текущем этапе мы получили следующий результат: при управлении освещенностью с помощью ладони, показания датчика изменяются в диапазоне 0-50.

Все, оставляем данную программу для Устройства mBot2 в текущем виде, больше мы ее трогать не будем.

Возвращаемся к Персонажу Panda, надо же перевести показания датчика в координаты движения.

Этап 3. Превращаем показания датчика в координаты движения персонажа.

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

При этом менять надо в соответствии с данными освещенности, превратив диапазон 0-50 в диапазон -140 +140

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

Тогда программа для спрайта Panda может выглядеть так:

-8

При 0 освещенности получится -140 (персонаж внизу экрана)

При максимуме (50) получится 140, персонаж вверху экрана.

Ну а значение переменной onboardLight донесет до виртуального персонажа информацию от реального сенсора.

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

Естественно, при этом mBot2 должен быть подключен к среде, в режиме Онлайн.

При необходимости введите коррективы.

Пока все. Продолжим работу с игрой в следующую встречу.

Ранее в цикле: