Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
Для выполнения примера с использованием указанного в листинге начального числа (123456789012345) на моем эмуляторе Pocket РС требовалось от 10 до 20 секунд. Исследуйте
Чтобы не усложнять пример, количество правил, используемых в функции управления переходом, было сознательно выбрано небольшим. В случае фактической реализации количество правил целесообразно увеличить, например, разрешая только допустимые переходы между состояниями, и вырабатывая исключения в непредвиденных ситуациях. Наличие жестких правил, регламентирующих возможность изменения состояния, оказывается очень полезным при поиске трудно обнаруживаемых ошибок, обусловленных выполнением кода сразу несколькими потоками. В подобных ситуациях процесс выполнения усложняется, так что введение надежных правил, осуществление проверок с помощью операторов ASSERT и генерация исключений значительно облегчат вам поиск тонких ошибок, избавив от возможной многочасовой работы по их устранению.
Использование конечных автоматов в играх
Конечные автоматы весьма удобно использовать в играх, в которых различные персонажи, перемещающиеся в области игры, могут действовать в различных режимах. Например, каждый персонаж может находиться в различных состояниях, соответствующих отдельным направлениям или характеру движения (персонаж обращен лицом влево или вправо, бежит вперед или назад, взбирается по лестнице, падает и тому подобное). Использование конечных автоматов с четко определенными правилами для каждого персонажа, определяющими возможные варианты его поведения в различных состояниях и допустимые переходы из одного состояния в другое, позволяет создавать сложные варианты поведения как персонажей, управляемых компьютером, так и персонажей, управляемых пользователем.
Резюме
Идея конечного автомата является чрезвычайно полезной концепцией, плодотворность которой прошла хорошую проверку временем. Использование конечных автоматов позволяет разработчикам создавать хорошо организованные приложения с гибкими возможностями. Поскольку процессу разработки мобильных приложений присущ итеративный, исследовательский характер, конечные автоматы сослужат вам хорошую службу, ибо они позволяют легко адаптировать приложение к новым идеям, которые могут возникнуть в ходе разработки проекта и внесения в него уточнений. В таких областях, как управление пользовательским интерфейсом, ресурсами, памятью или фоновым выполнением задач, использование конечных автоматов обеспечивает создание ясного, понятного и надежно функционирующего кода.
Старайтесь избегать неявного управления состояниями приложения путем встраивания соответствующего кода в различные места программы и не жалейте времени на разработку явно сформулированной модели состояний. Использование конечных автоматов стало уже обычной практикой при проектировании приложений для настольных компьютеров, серверов и мобильных устройств. Преимущества, обеспечиваемые применением конечных автоматов, заметнее всего проявляются в случае приложений для мобильных устройств, требующих экономного расходования экранного пространства, памяти, вычислительной мощности и других ресурсов. Связанные с этим незначительные дополнительные усилия с вашей стороны сторицей окупят себя впоследствии в процессе разработки прототипов, проектирования, компоновки, сопровождения и расширения приложения.