Литмир - Электронная Библиотека
Содержание  
A
A

Не включены в приложение только листинги примеров, которые, либо в силу малости их размера, либо в силу того, что они должны быть одинаково хорошо понятны разработчикам, принадлежащим любому лагерю, автор счел слишком тривиальными, чтобы тратить время на их трансляцию. Везде, где только возможно, соблюдается практика записи кода, принятая в Visual Basic, в том смысле, что приведенный ниже код является не результатом прямой трансляции кода, написанного на языке C#, а скорее его "VB-версией"; в то же время, оба вида примеров функционально эквивалентны друг другу, и тем, для кого представляет интерес сравнение возможностей языков Visual Basic и C#, чтобы решить для себя, какой из них выбрать, сделать это не составит труда. Удачного программирования!

Примеры к главе 5 (конечные автоматы)

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

Option Explicit On

Class MyStateMachineClass

Private Enum GameState

 StartScreen

 AskQuestion

 CongratulateUser

 ScoldUser

End Enum

Private m_CurrentGameStateAs GameState

'---------------------------------------------------------------------

'Конечный автомат, воздействующий на пользовательский интерфейс и

'управляющий переходами приложения в другие состояния в соответствии с

'текущим режимом работы пользователя

<div class="fb2-code"><code>'-----------------</code></div>----------------------------------------------------

Private Sub StateChangeForGame(ByVal newGameUIState _

 As GameState)

 'Определить, в какое состояние переходит приложение

 Select Case (newGameUIState)

 Case GameState.StartScreen

  'Если переход в данное состояние осуществляется из состояния,

  'для которого это запрещено, возбудить исключение

  If ((m_CurrentGameState &lt;&gt; GameState.CongratulateUser) _

   AndAlso (m_CurrentGameState &lt;&gt; GameState.ScoldUser)) Then

   Throw New System.Exception(&quot;Запрещённое изменение состояния!&quot;)

  End If

  'ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:

  ' 1. Скрытие (Hide), отображение (Show) и перемещение (Move)

  ' элементов управления пользовательского интерфейса

  ' 2. Настройка переменных/состояний игры, соответствующих

  ' данному режиму работы

  ' SetUpGameStateForStartScreen()

 Case GameState.AskQuestion

  'Если переход в данное состояние осуществляется из состояния,

  'для которого это запрещено, возбудить исключение

  If ((m_CurrentGameState &lt;&gt; GameState.StartScreen) _

   AndAlso (m_CurrentGameState &lt;&gt; GameState.CongratulateUser) _

   AndAlso (m_CurrentGameState &lt;&gt; GameState.ScoldUser)) Then

   Throw New System.Exception(&quot;Запрещённое изменение состояния!&quot;)

  End If

  'ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:

  ' 1. Скрытие (Hide), отображение (Show) и перемещение (Move)

  ' элементов управления пользовательского интерфейса

  ' 2. Настройка переменных/состояний игры, соответствующих

  ' данному режиму работы

  '

  ' SetUpGameStateForAskQuestion()

 Case GameState.CongratulateUser

  'Если переход в данное состояние осуществляется из состояния,

  'для которого это запрещено, возбудить исключение

  If (m_CurrentGameState &lt;&gt; GameState.AskQuestion) Then

   Throw New System.Exception(&quot;Запрещённое изменение состояния!&quot;)

  End If

  'ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:

  ' 1. Скрытие (Hide), отображение (Show) и перемещение (Move)

  ' элементов управления пользовательского интерфейса

  ' 2. Настройка переменных/состояний игры, соответствующих

  ' данному режиму работы

  '

  ' SetUpGameStateForCongratulateUser()

 Case GameState.ScoldUser

  'Если переход в данное состояние осуществляется из состояния,

  'для которого это запрещено, возбудить исключение

  If (m_CurrentGameState &lt;&gt; GameState.AskQuestion) Then

   Throw New System.Exception(&quot;Запрещённое изменение состояния!&quot;)

  End If

  'ЧТО СДЕЛАТЬ: Поместите сюда код, выполняющий следующие операции:

  ' 1. Скрытие (Hide), отображение (Show) и перемещение (Move)

  ' элементов управления пользовательского интерфейса

  ' 2. Настройка переменных/состояний игры, соответствующих

  ' данному режиму работы

  ' SetUpGameStateForScoldUser()

217
{"b":"947732","o":1}