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

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

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

Option Explicit On
Class MyStateMachineClass
Private Enum GameState
 StartScreen
 AskQuestion
 CongratulateUser
 ScoldUser
End Enum
Private m_CurrentGameStateAs GameState
'---------------------------------------------------------------------
'Конечный автомат, воздействующий на пользовательский интерфейс и
'управляющий переходами приложения в другие состояния в соответствии с
'текущим режимом работы пользователя
'---------------------------------------------------------------------
Private Sub StateChangeForGame(ByVal newGameUIState _
 As GameState)
 'Определить, в какое состояние переходит приложение
 Select Case (newGameUIState)
 Case GameState.StartScreen
  'Если переход в данное состояние осуществляется из состояния,
  'для которого это запрещено, возбудить исключение
  If ((m_CurrentGameState <> GameState.CongratulateUser) _
   AndAlso (m_CurrentGameState <> GameState.ScoldUser)) Then
   Throw New System.Exception("Запрещённое изменение состояния!")
  End If
  'ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:
  ' 1. Скрытие (Hide), отображение (Show) и перемещение (Move)
  ' элементов управления пользовательского интерфейса
  ' 2. Настройка переменных/состояний игры, соответствующих
  ' данному режиму работы
  ' SetUpGameStateForStartScreen()
 Case GameState.AskQuestion
  'Если переход в данное состояние осуществляется из состояния,
  'для которого это запрещено, возбудить исключение
  If ((m_CurrentGameState <> GameState.StartScreen) _
   AndAlso (m_CurrentGameState <> GameState.CongratulateUser) _
   AndAlso (m_CurrentGameState <> GameState.ScoldUser)) Then
   Throw New System.Exception("Запрещённое изменение состояния!")
  End If
  'ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:
  ' 1. Скрытие (Hide), отображение (Show) и перемещение (Move)
  ' элементов управления пользовательского интерфейса
  ' 2. Настройка переменных/состояний игры, соответствующих
  ' данному режиму работы
  '
  ' SetUpGameStateForAskQuestion()
 Case GameState.CongratulateUser
  'Если переход в данное состояние осуществляется из состояния,
  'для которого это запрещено, возбудить исключение
  If (m_CurrentGameState <> GameState.AskQuestion) Then
   Throw New System.Exception("Запрещённое изменение состояния!")
  End If
  'ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:
  ' 1. Скрытие (Hide), отображение (Show) и перемещение (Move)
  ' элементов управления пользовательского интерфейса
  ' 2. Настройка переменных/состояний игры, соответствующих
  ' данному режиму работы
  '
  ' SetUpGameStateForCongratulateUser()
 Case GameState.ScoldUser
  'Если переход в данное состояние осуществляется из состояния,
  'для которого это запрещено, возбудить исключение
  If (m_CurrentGameState <> GameState.AskQuestion) Then
   Throw New System.Exception("Запрещённое изменение состояния!")
  End If
  'ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:
  ' 1. Скрытие (Hide), отображение (Show) и перемещение (Move)
  ' элементов управления пользовательского интерфейса
  ' 2. Настройка переменных/состояний игры, соответствующих
  ' данному режиму работы
  ' SetUpGameStateForScoldUser()
 Case Else
  Throw New System.Exception("Наизвестное состояние!")
 End Select
 'Сохранить запрошенное новое состояние в качестве текущего
 m_CurrentGameState = newGameUIState
End Sub
End Class

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


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