// 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;

 }

} //Конец класса

<p>Явно и неявно определенные конечные автоматы</p>

Планируете ли вы это или не планируете, но ваш код будет так или иначе управляться состояниями. Например, если какой-либо элемент управления необходимо сделать недоступным для пользователя, то разработчики часто добиваются этого, устанавливая для свойств Enabled и Visible этих элементов управления значение false (например, TextBox1.Visible = false;). Для написания кода такого типа существует два возможных подхода, которые рассматриваются ниже

<p>Подход 1: зависящее от специфики конкретной ситуации, децентрализованное, неявное управление состояниями (неудачный подход)</p>
Перейти на страницу:

Похожие книги