Книга: Программирование мобильных устройств на платформе .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
- Листинг 5.1. Простой код конечного автомата для игры с множественным выбором
- Листинг 5.2. Неявное изменение состояния приложения (неудачный подход)
- Листинг 5.3. Явное изменение состояния приложения (удачный подход)
- Листинг 5.4. Код программы нахождения простых чисел, предназначенный для выполнения фоновым потоком
- Листинг 5.5. Тестовая программа, которая вызывает на выполнение приведенный выше код фонового потока, осуществляющего поиск простого числа
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- СТРУКТУРА ПРОСТОЙ ПРОГРАММЫ
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Дополнительные национальные кодовые страницы и порядки сортировки
- Глава 5 Агрессивные формы кода и борьба с ними
- Стиль написания исходного кода
- 1.4. Кодирование информации
- 1.4.1. Кодирование во время выполнения
- Три способа кодирования звука
- Листинг 15.11. Код для загрузки файла с Web-сервера
- 2. Пример создания базового отношения в записи на псевдокоде
- 5. Нормальная форма Бойса – Кодда (NFBC)