Книга: Программирование мобильных устройств на платформе .NET Compact Framework

Листинг 5.1. Простой код конечного автомата для игры с множественным выбором

Листинг 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("Неизвестное состояние!");
  }
  //Сохранить запрошенное новое состояние в качестве текущего
  m_CurrentGameState = newGameUIState;
 }
} //Конец класса

Оглавление книги


Генерация: 0.048. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз