Знакомство с «Защитой пасеки»
В рамках курса мы начнем изучать программирование машин состояний не теоретически, а на практике, в игре «Защита пасеки». Игру можно запустить на мобильном телефоне под управлением Android или на компьютере с ОС Windows или Linux
Методист образовательных программ «Программирование киберфизических систем»
Анита Ходова
«Защита пасеки» — игра, которая учит
Действие игры разворачивается в мире Берлоги. Это цивилизация разумных медведей из будущего. Согласно комиксу-предыстории к игре, однажды один медведь-программист допустил ошибку, разрабатывая интеллектуальных ос-помощников, из-за чего появились страшные кибернасекомые, которые разоряют пасеки и крадут самый ценный ресурс мира Берлоги — энергомед.
«Защита пасеки» — игра в стратегическом жанре «защита башен» (tower defence). Игра имеет два режима: подготовка в виде расстановки дронов и их программирования и столкновение с противниками, в ходе которого можно как-то помогать дронам, но в значительной степени изменить логику работы дронов уже не получится
На рисунке показано окно игры «Защита пасеки» в режиме столкновения с противником. Каждый дрон действует независимо в соответствии со своей программой. Дроны имеют область видимости и область действия оружия, а также специальные способности — при активации вручную или программным образом.
Базовая тактическая задача игры состоит в том, чтобы оберегать пасеку от дронов противника. Это можно сделать за счет правильной расстановки дронов, управления специальными способностями и программирования. Каждый дрон уже имеет программу по умолчанию, которая позволяет ему вполне сносно решать задачу защиты пасеки. С увеличением уровня станет все сложнее и сложнее координировать действия дронов в ручном режиме. Врагов появляется больше, они становятся опаснее, возникают новые тактики. В этот момент игроку понадобится создать собственные программы, чтобы продвинуться в игре.
Тактик и Программист в игре
Решая задачи в игре «Защита пасеки», мы будем опираться на две позиции: Тактик и Программист. Если вы играете в одиночку, вам придется совмещать эти позиции. Интереснее играть в паре, разделяя задачи и меняясь позициями.
Тактик — это тот, кто решает практическую задачу в игре, защищает пасеку. Для этого нужно не допустить дронов противника к пасеке, уничтожить их. Тактик оценивает ситуацию на поле и принимает управленческие решения при расстановке и после запуска очередной волны противников.
Программист решает прикладную задачу по улучшению работы дронов. Ему придется отвечать на следующие вопросы: что позволит добиться нужной работы дрона; какие модули лучше всего подойдут для создания той или иной программы; как сделать программу более универсальной, более эффективной, более полной, чтобы она охватывала все возможные ситуации на поле, и т. д.
В ходе игры предстоит переключаться между этими двумя позициями, синхронизировать их работу. Рассмотрим на примере, как это выглядит.
Пройдите обучающий уровень, используя только дроны типа «Степлер». При этом Тактик и Программист будут делать разное
Задача
  • Тактику необходимо не только пройти обучающий уровень, но и определить, в чем сильные и слабые стороны «Степлера» и как можно было бы эффективнее использовать его в бою
  • Программисту на первом этапе предлагается посмотреть со стороны, определить и записать или зарисовать, как работает «Степлер», как он ведет себя в бою и как принимает решения
Знакомство с интерфейсом программирования
После прохождения обучающего уровня Тактику и Программисту полезно поделиться своими выводами. Тактик может сформулировать требования к правильной работе дронов, а Программист — рассказать о логике их работы и ограничениях, которые важно учитывать при создании программ.
Поэтому первым улучшением дрона может быть такая модификация программы, которая позволит «Степлеру» отступать во время атаки.

Для этого потребуется выйти в интерфейс программирования, который доступен в режиме расстановки дрона при выборе дрона, и нажать на кнопку
Это позволит на втором этапе поменяться местами: Тактик уступит место Программисту, который сможет запрограммировать первые, самые актуальные улучшения в работе дрона. Например, «Степлер» останавливается во время стрельбы по противнику, что приводит к частым потерям дрона из-за ближних атак противников. Делать это не обязательно, ведь у «Степлера» достаточно дальнобойное оружие.
Интерфейс программирования позволяет менять программы дронов по умолчанию и создавать новые программы. Помимо функций редактирования диаграмм машин состояний, окно программирования позволяет также сохранять программы для будущего использования и загружать созданные ранее программы
На рисунке видны основные элементы диаграммы машины состояний, которые мы рассмотрим подробнее в будущих модулях курса. Для того чтобы поменять программу «Степлера» (сделать так, чтобы он отступал от противника), достаточно выбрать состояние «Атака» и добавить туда новую команду «Навигация.ДвигатьсяОтЦели ()», срабатывающую при входе в состояние («Общие» → «Вход» → «Навигация» → «ДвигатьсяОтЦели»). Сохранив программу, можно попробовать ее в работе на одном или нескольких «Степлерах». А после этого вернуться к дискуссии Тактика и Программиста о том, что еще нужно улучшить в работе дронов.
Комментарий для педагога
Теперь взглянем на содержание модуля глазами педагога: чему можно научиться, получив первый опыт игры и программирования в «Защите пасеки»? Для этого посмотрим на то, как мы работали. Это называется рефлексией.
Рефлексия предполагает выход из ситуации и взгляд на нее со стороны. Чтобы вместе восстановить содержание модуля, нужно построить общее пространство, куда будет направлено наше внимание (так называемый планшет, или «табло сознания»). Для этого лучше всего подойдет лист бумаги или флипчарта, доска на стене в классе или цифровом сервисе. Эту доску мы будем использовать для создания общих схем — пространства разделяемого понимания
В этом модуле мы не просто так ввели работу из двух позиций — Тактика и Программиста. Этот методический прием нужен, чтобы увидеть разницу между этими деятельностями. Это не просто роли, и дело не в том, как они себя ведут (например, Программист с ноутбуком стучит по клавишам, а Тактик думает над картой). Это деятельностные позиции, которые отличаются взглядом на мир, той общественно-полезной деятельностью, которую они осуществляют, и тем, на какие культурные образцы в своей работе опираются. Как это увидеть? Для этого необходимо вернуться к ситуации управления.
Рассмотрим игру «Защита пасеки» как ситуацию управления. Чем мы управляем в игре и с какой целью?

Мы управляем системой дронов, чтобы защитить пасеку от нашествия противников — киберос. Запрограммированные дроны — это отдельные элементы управляемой системы, напоминающие фигуры в шахматах. Поскольку это стратегия в реальном времени, ходы всех фигур совершаются одновременно, как в жизни, поэтому сложность резко повышается. Программирование понадобится нам для того, чтобы с этой сложностью совладать.
Методист образовательных программ «Программирование киберфизических систем»
Анита Ходова
  • Первая позиция, которую мы ввели, — это Тактик, или инженер-управленец. Он должен достигнуть поставленной цели, опираясь на имеющиеся средства: техническую систему из запрограммированных сельскохозяйственных дронов. Дроны работают неидеально, но управленцу нужно изучить и использовать их сильные стороны и слабые стороны противников.
  • Вторая позиция — Программист — в первой половине модуля соответствовала инженеру-исследователю: его задачей было восстановление принципов работы дронов. Особенность исследователя состоит в том, что он наблюдает систему извне, чтобы объективно описать ее работу, оценить качество существующего решения, создать собственную модель.
  • Наконец, третью позицию — позицию инженера-разработчика — тот же Программист занял во второй половине модуля, когда потребовалось изменить работу дронов, перепрограммировать их, опираясь на техническое задание управленца, чтобы эта цифровая система управления была удобнее и лучше соответствовала задачам управленца.
В ходе программирования автономных систем в этом курсе, а также при создании собственных киберфизических систем в будущем мы будем возвращаться к этим трем ключевым позициям инженера.
При обучении программированию очень важно обсуждать такие схемы, даже если они могут поначалу показаться сложными. Еще важнее, чтобы учащиеся научились рисовать такие схемы самостоятельно. Поэтому в рамках курса мы будем переключать режимы работы: получать собственный опыт в игре и пробовать осмыслить полученный опыт, выключая мониторы и рисуя схемы на бумаге или на доске. Современная культура программирования и мышление программиста не сформируются без способности видеть мир через схемы

Запишитесь на курс, чтобы выполнять задания и получить сертификат!

Программирование автономных систем на примере игры «Берлога: Защита пасеки»
Курс о том, как с помощью простых инструментов научиться программировать поведение автономных агентов. Вы увидите, как игровые дроны подчиняются коду и как эти же принципы применимы к роботам в реальной жизни.
  • Что вы получите
    • 12 уроков с разбором заданий прямо в игре
    • Авторская подача: сложное программирование простым языком
    • Возможность осмыслить педагогические методики, применяемые в каждой теме
    • Свободное расписание: нет дедлайнов и сроков сдачи заданий
    • Все материалы доступны сразу, можно начать обучение в удобное время
    • Проверочные задания после каждого урока
    • Профессиональное видео и современная графика
    • Быстрая связь с техподдержкой
    • Сертификат о прохождении курса
  • Зачем
    • Научиться и научить программировать через игру
    • Освоить язык ПРИМС — инструмент для создания умных и понятных алгоритмов
    • Разобраться, как работают современные киберфизические системы
    • Научиться строить управление: от простых реакций до сложных сценариев поведения
    • Получить готовую методику проведения занятий: с пояснениями, примерами и игровыми задачами
    • Сделать первый шаг к проектной работе с настоящими роботами и автономными системами
Находясь на сайте, вы даете согласие на обработку файлов cookie. Это необходимо для более стабильной работы сайта
OK