Чтение онлайн

ЖАНРЫ

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

Салмре Иво

Шрифт:

'Загрузить изображения в виде двоичных потоков из нашей сборки

m_CaveMan_Bitmap1 = New System.Drawing.Bitmap( _

thisAssembly.GetManifestResourceStream( _

assemblyName + ".Hank_RightRun1.bmp"))

m_CaveMan_Bitmap2 = New System.Drawing.Bitmap( _

thisAssembly.GetManifestResourceStream( _

assemblyName + ".Hank_RightRun2.bmp"))

m_CaveMan_Bitmap3 = New System.Drawing.Bitmap( _

thisAssembly.GetManifestResourceStream( _

assemblyName + ".Hank_LeftRunl.bmp"))

m_CaveMan_Bitmap4 = New System.Drawing.Bitmap( _

thisAssembly.GetManifestResourceStream( _

assemblyName + ".Hank_LeftRun2.bmp"))

'Добавить
их в коллекцию

m_colCaveManBitmaps = New System.Collections.ArrayList

m_colCaveManBitmaps.Add(m_CaveMan_Bitmap1)

m_colCaveManBitmaps.Add(m_CaveMan_Bitmap2)

m_colCaveManBitmaps.Add(m_CaveMan_Bitmap3)

m_colCaveManBitmaps.Add(m_CaveMan_Bitmap4)

 End If

 'Возвратить коллекцию

 Return m_colCaveManBitmaps

End Function

End Class

Примеры к главе 13 (проектирование пользовательского интерфейса)

Листинг 13.1. Использование конечного автомата для экспериментов с двумя различными вариантами компоновки пользовательского интерфейса

#Const PLAYFIELD_ON_BOTTOM = 0 'Отобразить ПОЛЕ ИГРЫ под ПИ

'#Const PLAYFIELD_ON_BOTTOM = 1 'Отобразить ПОЛЕ ИГРЫ над ПИ

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

'ОБРАБОТЧИК СОБЫТИЙ: Вызывается при загрузке формы

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

Private Sub Form1_Load(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles MyBase.Load

 'Задать совместно используемые свойства нашего визуального интерфейса

 SetStartControlPositionAndState

 'Задать динамические свойства, исходя из того, в какое состояние

 'игры мы входим

 StateChangeForGameUI(GameUIState.startScreen)

End Sub

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

'Конечный автомат, который управляет отображением кнопок, скрываемых вручную

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

Private Enum GameUIState

 startScreen = 1

 waitForNextQuestion = 2

 waitForUserToStateKnowledge = 4

 waitForUserToAnswerMultipleChoice = 8

End Enum

'Текущее
состояние игры

Private m_GameUIState As GameUIState

'==========================================================================

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

'==========================================================================

Private Sub StateChangeForGameUI(ByVal newGameUIState As _

 GameUIState)

 m_GameUIState = newGameUIState

 Select Case (newGameUIState)

 Case GameUIState.startScreen

buttonAskQuestion.Visible = True

buttonAskQuestion.Text = "Start"

'Скрыть текстовое окно

textBoxAskQuestion.Visible = False

SetAnswerButtonVisibility(False)

SetDifficultyButtonVisibility(False)

 Case GameUIState.waitForNextQuestion

setQuestionText("List answer details here... " + vbCrLf + _

"Lots of space to write..." + vbCrLf + _

"Waiting for user to select next question...")

textBoxAskQuestion.Visible = True

buttonAskQuestion.Text = "Next"

buttonAskQuestion.Visible = True

'Убедиться в том, что кнопка отображается на переднем плане

buttonAskQuestion.BringToFront

SetAnswerButtonVisibility(False)

SetDifficultyButtonVisibility(False)

#If PLAYFIELD_ON_BOTTOM <> 0 Then 'ПОЛЕ ИГРЫ располагается под ПИ

textBoxAskQuestion.Height = pictureBoxGameBoard.Top - 2

#Else 'ПОЛЕ ИГРЫ располагается над пользовательскими элементами управления

textBoxAskQuestion.Top = pictureBoxGameBoard.Top + _

pictureBoxGameBoard.Height + 2

textBoxAskQuestion.Height = Me.Height - _

textBoxAskQuestion.Top

#End If

 Case GameUIState.waitForUserToStateKnowledge

SetTextForVocabularyQuestion

textBoxAskQuestion.Visible = True

buttonAskQuestion.Visible = False

SetAnswerButtonVisibility(False)

SetDifficultyButtonVisibility(True)

Поделиться с друзьями: