1. Разработка разделяемого ресурса базы данных инерционного сенсора

Так как функции опроса, фильтрации значений и выделения базовых движений на основе показаний модуля инерционного сенсора должны присутствовать в каждом инерциальном приложении, то очень удобно было бы создать шаблон инерциального приложения, где эти функции уже содержатся. Но учитывая специфику операционной системы Palm OS есть более изящное решение хранения функций используемых в инерциальных приложениях – это создание разделяемого ресурса. Специфика операционной системы такова, что любая информация, хранящаяся в памяти, КПК представлена в виде базы данных. Конкретно бинарные коды программ тоже хранятся в базе данных в отдельных записях. Сегмент кода в одной записи, сегмент данных в другой и т.д., и все эти записи принадлежат одной базе данных – приложению под Palm OS. Разделяемые ресурсы тоже представляют собой базы данных. Любое приложение для Palm OS может подключиться к разделяемому ресурсу, и если этот ресурс – библиотека с функциями, то приложение может свободно пользоваться этими функциями.

Схема взаимодействия инерционного сенсора с инерциальным приложением сделанная посредством разделяемого ресурса базы данных инерционного сенсора представлена на Рис. 5 .29

Стандартные органы ввода информации

Пользователь

Инерционный сенсор

Palm OS

Разделяемый ресурс базы данных модуля ИС

Инерциальное приложение

Рис. 5.29 Схема взаимодействия модуля ИС с инерциальным приложением посредством разделяемого ресурса базы данных модуля ИС

В базу данных инерционного сенсора следует перенести следующие функции:

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

  • DispInertialParameters – функция удаляющая из памяти переменные созданные функцией InitInertialParameters.

  • PoolInertialSensor – функция опроса и фильтрации показаний модуля инерционного сенсора.

  • CheckFlips – функция выделяющая базовые движения типа Flip.

  • CheckPushes – функция выделяющая базовые движения типа Push.

  • SetOffset – функция по которой опрашивается сенсор и его текущие показания считаются начальными

  • EvtGetEvent – перегруженная функция опроса органов управления КПК Palm.

  • SetTrashhold – функция задающая точность сверки базовых движений с эталонными.

    1. Разработка демонстрационного инерциального приложения

Для апробации предлагаемого подхода управления приложениями КПК Palm с помощью пространственных жестов руки необходимо разработать инерционное приложение, которое наиболее полно сможет показать преимущества предлагаемого подхода. Можно сформулировать несколько критериев подобного инерциального приложения:

  • Большой набор функций вызываемых органами управления.

  • Непрерывный и динамичный ввод информации.

  • Красочный интерфейс.

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

В результате проведённого исследования различных компьютерных игр возник проект игры Cosmicon. В ней вы управляете действиями героя игры по имени Jacob. Jacob перемещается по плоскому миру и выполняет различные задания, предусмотренные сценарием игры, и отбивается от большого количества врагов. Для проектирования этой игры было принято решение использовать универсальный язык модулирования UML для создания объектной модели, которую следовало перенести на язык C++.

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

Рис. 5.30 Диаграмма вариантов использования

По результатам изучения диаграммы использования была создана диаграмма классов. При реализации классов на языке C++ программа была разбита на несколько модулей:

  • MapEngine– модуль отвечающий за вывод карты на экран.

  • UserEvent- модуль отвечающий за распознавание действий пользователя.

  • Hero- модуль, отвечающего за вывод на экран и анимацию движений главного героя игры.

  • Shoot- модуль, отвечающий за анимацию полёта пуль и гранат.

  • Explode– модуль, отвечающий за анимацию взрывов.

  • Items– модуль, отвечающий за предметы находящиеся на карте

  • Inventoryмодуль, отвечающий за оперирование предметами, находящимися в экипировке главного героя.

  • StaticEnemy- модуль, отвечающий за статически расположенных героев игры.

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

  • Quest- модуль, отвечающий за контроль прохождения игры.

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

Управление игрой производится в соответствии с Таблица 5 .20

Таблица 5.20

Управление игрой Cosmicon

Действие

Значение

Наклоны в разные стороны

Передвижение главного героя по карте

Push Forward

Прыжок вперёд

Push Backward

Прыжок назад

Push Left

Прыжок влево

Push Right

Прыжок вправо

Push Down

Подкат

Push Up

Бросок гранаты

Flip Left

Предыдущий предмет из инвентаря

Flip Right

Следующий предмет из инвентаря

Flip Forward

Осмотреться

Flip Backward

Использовать предмет

Flip Clockwise

Следующее оружие

Flip Anticlockwise

Предыдущее оружие

Hard Key 1

Выстрел

Hard Key 2

Toggle Control

Hard Key 3

Пауза

На основе данного проектирования было написано инерциальное приложение CosmiconдляPalmOS4.0. Объём исходного кода на языкеC++ составил 64кБайт, объём бинарногоprc-файла составил 192кБайт. Несколько скриншотов игры представлены на Рис. 5 .31.

Рис. 5.31 Скриншоты игры Cosmicon

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

Соседние файлы в папке Skyn (дата сдачи 19.06.02, оценка отлично)