Как сделать игру на микробит
Перейти к содержимому

Как сделать игру на микробит

  • автор:

Совмещаем «детский» микроконтроллер и настольные игры

Подарили мне недавно Micro:Bit. Который для обучения школьников, от BBC и сейчас имеет возрастающую популярность (особенно после того, как китайцы пообещали вот-вот сделать его клон дешевле раза в два). Я сам знаком с Arduino, был одним из пионеров, который у нас в стране показал, как скрестить Arduino со средой Scratch и эта платка… меня на первых порах не заинтересовала. Но чуть позже родилась идея: а не скрестить ли ее с настольными играми?

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

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

Первой в голову пришла идея реализовать обычные игральные кубики D6 (которые от 1 до 6). Сказано-сделано. Запустив среду makecode.microbit.org я набросал простую программу, которая при нажатии кнопки А генерирует случайное число от 1 до 6 и выводит его на светодиодную матрицу устройства.

Для «украшения» кода добавил пару картинок «генерации» кубика и вуаля. Готов простой электронный кубик.

А если надо кубик D12? Генерируем случайное число до 12. А D20? До 20 конечно-же. Но проблема в том, что на «экране» помещается только одна цифра и две цифры прокручиваются, но только один раз по команде вывода их на матрицу. Что делать? Пришлось добавлять переменную хранения результата, циклы показа и повторять значение последнего броска кости по нажатию на кнопку B.

Заменив событие нажатия кнопки на считывание «тряски» (в Micro:Bit есть акселерометр) можно сделать процесс «бросания» более реалистичным.

А если надо бросить два кубика? Задача стала интересней. Плюс захотелось сделать игральные кубики как положено с точками. Благо матрица (размером 5×5) состоит из достаточно далеко расположенных светодиодов и если их зажигать даже рядом, то можно легко различить, где «единичка», а где «шестерка».

Теперь я делал «игральные кубики» для игр типа Монополии и Колонизаторы (где кидают 2 кубика) или Мачи Коро (где при игре надо кидать один или два кубика D6). Но проблема встала в отображении этих бросков.

Как я написал выше, матрица у Micro:Bit 5×5. Для отображения обычного шестигранного кубика нам нужно 3×3 светодиода.

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

Обнаружив, что команда while плохо сочетается со считыванием событий нажатия кнопок и написав костыльную систему из переменных и их проверки я получил нужный мне результат. По нажатию на кнопку А генерировался один кубик, на B — два кубика, A+B выключали экран и приводили систему в начальное состояние.

Также решил «подрихтовать» генератор случайных чисел по простой формуле dice = round (random(от 50 до 649)/100). «Кубики» стали выпадать чуть реалистичней.

Итоговый «монстрокод» получился вот такой (код непосредственно вывода графики кубиков не влез, так как он уходит далеко вниз).

А результат работы можно глянуть на видео:

Уже что-то интересное. Причем за счет сдвига по углам можно последовательно выводить аж 5 кубиков и их можно достаточно легко считать последовательно.

А можно сделать что-то еще? В моей новой настольной игре «Карточная лига Пароботов» кубики будут использоваться для двух вещей: определение бонуса для игроков в текущем раунде и определение команды для роботов-ботов на игровом поле. Поэтому было решено реализовать следующее:

  1. Счетчик раундов (их всего 8)
  2. Определение Бонуса в текущем раунде (кнопка А)
  3. Определение команды Бота (кнопка B)
  4. Переход к следующему раунду (повторное нажатие кнопки А)

Как работает программа видно на видео:

Так как загружать в Micro:Bit просто (достаточно подключить его через микро-USB к компьютеру и перекинуть в корень появившегося диска hex-файл программы), я сделал у себя на сайте страницу, где хочу размещать готовые «пресеты» для разных настольных игр: www.simplerobot.org/elektronika

Там можно найти как готовые hex-файлы, так и ссылку на исходные коды. Пользуйтесь на здоровье. Купить плату же можно в той же Амперке или «у китайцев» на Али.

Что хочется еще сделать? Во-первых «отвязать» плату от внешнего питания, прикрутив к ней шилд для батареек.

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

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

  • настольная игра
  • микроконтроллер
  • microbit
  • программирование для детей
  • Программирование микроконтроллеров
  • Электроника для начинающих

Сделайте micro:bit игровым контроллером

В Scratch 3.0 появились интересные блоки для micro:bit, включая те, блоки, которые запускаются, когда между контактами установлены микро-битные соединения. Настройте код игры, чтобы использовать эти блоки, и вы можете создать игровой micro:bit контроллер из всего, что проводит электричество!

Выбирайте игру

Для начала, вам необходимо создать или найти игру, с которой можно работать. Ваш micro:bit имеет три контакта, которые можно превратить в кнопки, поэтому вам нужно начать с игры Scratch, в которую можно играть не более чем тремя клавишами клавиатуры. Во множество игр можно играть только с клавишей пробела, слева и справа. Клавиши со стрелками или влево/вправо/вверх: если вы играли в теннис или догонялки, то у вас есть игра, которую вы можете использовать! Если у вас еще нет готовой игры, то у вас есть два варианта: вы можете создать игру самостоятельно, либо сделать ремейк чужой игры (попробуйте список Scratch Wiki, например платформеры, или найти игры, похожие на Flappy Bird, Tetris, или Space).

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

Управление игрой с micro:bit

Как только у вас запущена игра на Scratch 3.0, в которой в качестве элементов управления используется не более 3-х различных кнопок, вы можете управлять с micro:bit!

Важно знать: ваш micro:bit имеет соединение по нижнему краю, которые называются контактами.

Так выглядит Scratch блок:

microbit_news_21.jpg

Это может происходить вверху скрипта, и он запускает этот скрипт всякий раз, когда происходит соединение между контактом, GND (земля) и контактом, который говорит 0, 1 или 2 (в зависимости от того, какой из них вы выбрали в блоке). Это соединение может быть сделано пальцами, касанием металлического предмета о что-то, что может произвести хотя бы немного электричества!

Чтобы использовать эти контакт-соединения для управления игрой, вам необходимо определить части кода, которые в данный момент обрабатывают ввод, а затем изменить их, чтобы использовать вместо них блоки micro:bit соединения контакта. Например, если вы работаете над игрой, управляемой стрелками влево / вправо и вправо, вам нужно искать блок, который запускается:

microbit_news_22.jpg

Если в игре используется пробел, ищете блок:

microbit_news_23.jpg

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

Когда вы найдете один из этих сценариев контроллера, отсоедините код от блока События, к которому он присоединен, и вставьте вместо него этот блок:

microbit_news_21.jpg

Обязательно выбирайте разный контакт для каждого элемента управления!

microbit_news_24.jpg

После того, как вы нашли и заменили элементы управления клавиатуры на элементы управления контактами, проведите пробный запуск: можете ли вы теперь играть в игру, устанавливая соединения между землей и пронумерованными контактами? Коснитесь и отпустите контакты, чтобы убедиться, что новые элементы управления работают так же, как и исходные!

microbit_news_25.jpg

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

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

Создавая контроллер

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

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

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

microbit_news_26.jpg

Пример: котроллер сделали из фольги и токопроводящей ленты

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

У вас нет токопроводящей ленты? Фольга может подойти для контроллера как на фото:

microbit_news_27.jpg

Одна нога остается неподвижной на фольгированном листе, прикрепленному к земле; другая нога прикрепляется к левой, правой и нажимает «кнопки».

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

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

microbit_news_28.jpg

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

Наконец, простая картонная коробка может помочь упорядочить провода.

microbit_news_29.jpg

Что бы вы ни решили сделать, не забудьте тщательно все протестировать. Позовите друга и играйте вместе!

Решение проблем:

Если контроллер внезапно прекращает работу, проверьте следующее:

1. Соединены ли по-прежнему micro:bit и компьютер? Если micro:bit перезапустился или вышел из строя, может потребоваться его повторное соединение с компьютером.

2. Все ли хорошо с зажимами? Если они не зафиксированы прямо на контактах, перпендикулярно нижней части micro:bit, это может вызвать проблемы.

3. Есть ли зажимы, которые не должны касаться друг друга? Особенно если вы решили поместить провода в маленький контейнер, это вполне возможно.

Автор: Eileen King занимается развитием навыков программирования у детей.

Руководство. Использование micro:bit и создание кода с помощью Data Streamer

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

В этом руководстве показано, как использовать платформу Make Code для написания простой программы, которая отправляет динамические данные из микросхемы ИНСТРУКЦИИ в Microsoft Excel с помощью Передача данных (Майкрософт) надстройки.

Пример программы, используемой в этом руководстве, выводит данные акселерометра micro:bit в Excel. Вы можете изменить и адаптировать базовую программу для работы с другими микро-битными датчиками или внешними датчиками.

Что потребуется для этого проекта

Оборудование

  • микро:битовый микроконтроллер

Windows 8 и более поздних версий не требуются дополнительные драйверы. Если вы впервые программируете микро:бит в Windows 7, вам потребуется скачать драйверы mbed для компьютера.

  • Кабель microUSB для USB

Программное обеспечение

  • Microsoft Excel O365
  • Надстройка Excel data Streamer включена
    • Data Streamer предоставляется бесплатно со всеми подписками на Office 365

    Использование блоков кода для вывода данных в последовательную

    Последовательный порт на компьютере — это способ Передача данных (Майкрософт) данных с внешних устройств. В этом разделе показано, как использовать блоки make Code для печати данных на последовательный порт.

    1. Подключите micro:bit и перейдите на веб-сайт Make Code .
    2. Выберите параметр micro:bit и создайте новый файл. Откроется интерфейс блока MakeCode.
    3. Добавьте расширение HackingSTEM Data Streamer. Надстройка Data Streamer.Перейдите в раздел «Расширения», расположенный в нижней части блоков кода, и выполните поиск по запросу Data Streamer. Щелкните надстройку HackingSTEM Data Streamer, чтобы включить ее. Задайте скорость передачи.
    4. Вернитесь в раздел «Блок» в MakeCode, найдите и откройте блоки потока данных желтого или оранжевого цвета в верхнем разделе. Задайте скорость при запуске.
    5. Задайте скорость передачи, перетащив блок «Задать скорость в бодах» в поле «При запуске». Используйте параметр по умолчанию (9600).

    Примечание. Скорость передачи данных — это скорость, с которой компьютер и микро бит обмениваются данными.

    Запись массива номеров 1.

  • Затем выведите данные в последовательную версию с блоком массива номеров записи. Перетащите его в блок forever . Запись массива номеров 2.
  • В массив слотов вставьте данные, которые нужно распечатать в последовательный формат. В этом примере мы печатаем значения micro:bit accelerometer x, y и z. Изменение акселерометра Axes.png.Блоки акселерометра находятся в разделе «Входные данные». Не забудьте соответствующим образом изменить выбранную переменную с «x» на y и z. Напишите новую строку.
  • Выведите новую строку после массива, чтобы обозначить конец пакета данных в Data Streamer. Для этого перетащите блок «Строка записи» из раздела Data Streamer. Добавить паузу.
  • Необязательно. Добавьте паузу, чтобы упростить просмотр данных по мере их печати.
  • Загрузка кода на micro:bit

    Получив программу создания блока кода, вы можете отправить ее в micro:bit! Это можно сделать двумя способами, описанными ниже.

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

    Вариант 1

    Скачайте код на micro:bit.

    Скачайте и сохраните файл кода непосредственно на диск micro:bit.

    Вариант 2

    Скачайте код в папку

    Скачайте и сохраните файл кода в папку на компьютере.

    Скачайте код в папку

    Откройте проводник, перейдите к папке, в которой сохранен файл кода, а затем перетащите файл кода на микрораздел.

    Использование Data Streamer

    Вы готовы использовать Data Streamer! Откройте Excel и перейдите на вкладку Data Streamer.

    Подключите устройство.

    1. Щелкните «Подключить устройство», чтобы выбрать устройство micro:bit USB.

    [!! ПРИМЕЧАНИЕ. Если в списке указано несколько устройств, отключите micro:bit и посмотрите, какое из них исчезнет, а затем повторно подключитесь и выберите это USB-устройство.

    Запуск данных.

    1. Щелкните «Начать данные» на вкладке «Поток данных» и перейдите к листу «Данные в», чтобы просмотреть данные акселерометра micro:bit, напечатанные в трех отдельных столбцах.
    2. Вы можете представить данные, чтобы упростить отслеживание изменений с течением времени и выполнить анализ данных с помощью встроенных функций Excel.

    Дополнительные сведения

    Анализ данных Excel

    Поэкспериментируйте с различными средствами визуализации данных и встроенными уравнениями для анализа данных. Вот несколько полезных руководств по Excel:

    1. Визуализация передаваемых данных в Excel
    2. Создание макросов для передаваемых данных
    3. Создание таблицы данных
    4. Создание таблицы хранилища пробной версии

    Проекты HackingSTEM

    Ищете идеи по проекту? Команда Microsoft HackingSTEM имеет множество проектов и учебных планов с открытым кодом! Ниже приведены некоторые проекты HackingSTEM, использующие micro:bit.

    1. Единица измерения электрокондуктивности
    2. Датчик flex/Pressure

    Полную библиотеку действий HackingSTEM см. здесь.

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

    Программируем игру на микроконтроллере BBC micro:bit

    Ольга Тузова

    Слова «переворот в сознании» уже звучали в отношении BBC micro:bit. Но они возникают вновь и вновь по мере освоения этого миниатюрного, изящного и вместе с тем мощного микроконтроллера. Его несомненные достоинства — самодостаточность и доступность — ориентированы на обычного ребёнка-школьника, и дают возможность ввести его в цифровой мир, где он примерит роль не потребителя, а любопытного и заинтересованного создателя, например, компьютерной игры.

    Для разработки увлекательной micro:bit-игры не потребуется никаких дополнительных аксессуаров, кроме самого микроконтроллера и источника питания. При этом игра может быть всегда под рукой – микроконтроллер легко помещается в небольшом кармане. Можно поиграть с одноклассниками, родителями, которые по достоинству оценят не только ваше мастерство игрока, но в большей степени – мастерство разработчика. Отличная мотивация для новых свершений!

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

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

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

    Ниже — несколько примеров игровых программ. Если у вас ещё нет микроконтроллера BBC micro:bit, вы можете использовать для игры эмулятор, встроенный в редактор кода.

    1. Популярная игра «Поймай яйцо».
      С заданным временным интервалом в верхней строчке дисплея в случайной позиции появляется спрайт «яйцо», которое немедленно начинает падать вниз. В нижней строчке дисплея находится спрайт «корзина», который может перемещаться по горизонтали, повинуясь наклонам микроконтроллера (работает акселерометр!). Задача игрока поймать как можно больше яиц в свою корзину.
      Игра начинается нажатием кнопки A и останавливается одновременным нажатием кнопок A и B. Эмулятор акселерометра реагирует на перемещение курсора мыши справа налево и слева направо.
      https://makecode.microbit.org/_YgjM712rEa1X
    2. «Космический корабль и метеоры». (Первоисточник: https://youtu.be/m5vFKOAFOIw)
      Игра похожа на предыдущую, но здесь надо «космическому кораблю», который находится на нижней строчке дисплея, увернуться от метеоров, попав в узкий просвет между ними. С точки зрения программирования задача немного сложнее, так как программируется одновременное движение группы светодиодов-метеоров.
      Запускается игра жестом «встряхивание», останавливается одновременным нажатием кнопок A и B. «Космический корабль» управляется кнопками A и B.
      https://makecode.microbit.org/_2o56PaHoiJLJ
    3. «Космические войны». (Первоисточник: https://youtu.be/l7LTg15KPgE). Игра для двух микроконтроллеров. Кнопками A и B можно перемещать свой космический корабль вправо и влево. Одновременное нажатие кнопок A и B – выстрел по противнику. Выстрел с помощью радиосигнала передаётся на второй микроконтроллер. Жестом «встряхивание» на дисплей выводятся набранные в игре очки.
      https://makecode.microbit.org/_Cpk8URX9sfiY

    Это – несложные проекты для начинающих. В дальнейшем можно попробовать свои силы в проектировании «micro:bit-тетриса» или «micro:bit-змейки», например.

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

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