Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
Каждый оператор case соответствует одному из вариантов изменения состояния и должен содержать вызов функции, выполняющей всю необходимую для этого работу. Подобного рода централизация и инкапсуляция управления состояниями является одним из наиболее мощных аспектов использования конечных автоматов; все важные изменения состояний приложения определяются и обрабатываются централизованно в одном месте программы.
Листинг 5.1. Простой код конечного автомата для игры с множественным выбором
class MyStateMachineClass {
private enum GameState {
StartScreen, AskQuestion, CongratulateUser, ScoldUser
}
private GameState m_CurrentGameState;
//---------------------------------------------------------------------
//Конечный
автомат, воздействующий на пользовательский интерфейс
//и управляющий переходами приложения в другие состояния в соответствии
//c текущим режимом работы пользователя
//---------------------------------------------------------------------
private void StateChangeForGame(GameState newGameUIState) {
//Определить, в какое состояние переходит приложение
switch(newGameUIState) {
case GameState.StartScreen:
//Если переход в данное состояние осуществляется из состояния,
//для которого это запрещено, возбудить исключение
if ((m_CurrentGameState != GameState.CongratulateUser) && (m_CurrentGameState != GameState.ScoldUser)) {
throw new System.Exception("Запрещённый переход!");
}
//ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:
// 1. Скрытие (Hide), отображение (Show) и перемещение (Move)
// элементов управления пользовательского интерфейса
// 2. Настройка переменных/состояния игры, соответствующих
// данному режиму работы
//
// SetUpGameStateForStartScreen;
break;
case GameState.AskQuestion:
//Если переход в данное состояние осуществляется из состояния,
//для которого это запрещено, возбудить исключение
if ((m_CurrentGameState != GameState.StartScreen)
&& (m_CurrentGameState != GameState.CongratulateUser)
&& (m_CurrentGameState !=GameState.ScoldUser)) {
throw new System.Exception("Запрещённый переход!");
}
//ЧТО
СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:
// 1. Скрытие (Hide), отображение (Show) и перемещение (Move)
// элементов управления пользовательского интерфейса
// 2. Настройка переменных/состояния игры, соответствующих
// данному режиму работы
//
// SetUpGameStateForAskQuestion;
break;
case GameState.CongratulateUser:
//Если переход в данное состояние осуществляется из состояния,
//для которого это запрещено, возбудить исключение
if (m_CurrentGameState != GameState.AskQuestion) {
throw new System.Exception("Запрещённый переход!");
}
//ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:
// 1. Скрытие (Hide), отображение (Show) и перемещение (Move)
// элементов управления пользовательского интерфейса
// 2. Настройка переменных/состояния игры, соответствующих
// данному режиму работы
//
// SetUpGameStateForCongratulateUser;
break;
case GameState.ScoldUser:
//Если переход в данное состояние осуществляется из состояния,
//для которого это запрещено, возбудить исключение
if (m_CurrentGameState != GameState.AskQuestion) {
throw new System.Exception("Запрещённый переход!");
}
//ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:
// 1. Скрытие (Hide), отображение (Show) и перемещение (Move)
// элементов управления пользовательского интерфейса
// 2. Настройка переменных/состояния игры, соответствующих
// данному режиму работы
//
// SetUpGameStateForScoldUser;
break;
default:
throw new System.Exception("Неизвестное состояние!");
}
//Сохранить запрошенное новое состояние в качестве текущего
Поделиться:
Популярные книги
Мир-о-творец
8. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Виконт. Книга 4. Колонист
Псевдоним `Испанец`
Фантастика:
фэнтези
попаданцы
аниме
7.50
рейтинг книги
Титан империи
1. Титан Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Запретный Мир
1. Запретный Мир
Фантастика:
фэнтези
героическая фантастика
8.94
рейтинг книги
Ты предал нашу семью
2. Предатели
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Цеховик. Книга 2. Движение к цели
2. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сила рода. Том 3
2. Претендент
Фантастика:
фэнтези
боевая фантастика
6.17
рейтинг книги
Проданная невеста
Любовные романы:
любовно-фантастические романы
5.80
рейтинг книги
Волк 7: Лихие 90-е
7. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Падение Твердыни
6. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Приручитель женщин-монстров. Том 9
9. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Ночь со зверем
3. Оборотни-медведи
Любовные романы:
любовно-фантастические романы
5.25
рейтинг книги
Я – Орк. Том 6
6. Я — Орк
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Совок-8
8. Совок
Фантастика:
попаданцы
альтернативная история
5.00