Практика

  1. Выберите команду Сервис, Макрос, Редактор Visual Basic (Tools, Macro, Edit Visual Basic), откроется окно редактора Visual Basic.
  2. Выберите команду Вставить User Form (Insert UserForm).
  3. Используя панель элементов и окно свойств, заполните пользовательскую форму элементами управления (рис. У1.1), создав требуемое диалоговое окно приложения.

Рис. У1.1. Вид редактора Visual Basic при создании пользовательской формы для игры в орел и решка

  1. Для написания кода программы, связанного с пользовательской формой, достаточно дважды щелкнуть, например, кнопку Бросание монеты. Откроется редактор кода на листе модуля userFormi. Более того, он откроется на том месте, где программируются действия, связанные с элементом управления, который вы дважды щелкнули. Если код еще не набран, то при открытии редактора кода появятся инструкции заголовка и окончания процедуры, которая будет ассоциирована с элементом управления. В данном случае в редакторе кода будет:

Private Sub CommandButton1_Click() End Sub

Конечно, редактор кода заботится о вас, создавая инструкции заголовка и окончания процедуры. Но не требуйте от него невозможного, а именно, чтобы он телепатически прочитал ваши мысли и ввел их в виде кода в тело процедуры. Код в тело процедуры кроме вас никто вводить не будет. Как это ни печально, но вы должны вводить их вручную, при этом используя интеллектуальные качества редактора кода и средства визуального программирования, которые существенно упростят процесс создания программы.

  1. Когда-то Конфуций сказал: "То что слышу — забываю, то что вижу -запоминаю, а то что делаю — поминаю", а Мао Дзе Дун добавил: "Для того чтобы стул сдвинулся, его надо сдвинуть". Итак, вдохновившись этими двумя мудростями, наберем текст следующей программы на листе модуля UserForm1.

' Переменные уровня модуля

'

Dim Банк As Long

Dim Партия As Long

Dim НомерМаксимум As Long

Dim НомерМинимум As Long

Dim Максимум As Long

Dim Минимум As Long

'

Private Sub CommandButton1_Click()

' Определяет номер очередной партии

Партия = Партия + 1

' Запрещается изменение пользователем значения

' в поле Банк в течение игры

TektBoxl.Enabled = False

'

' Проверяется, являются ли вводимыми в поле Банк данные числом

If IsNumeric(TextBox1.Text) = False Then

MsgBox "Введите ставку", vbExclamation, "Орел и решка"

TextBox1.Enabled = True

TextBox1.SetFocus

Exit Sub End If Банк = CLng(TextBox1.Text)

' Проверяется, не превышает ли Банк максимально допустимую величину

If Банк > 10000 Or Банк <= 0 Then

MsgBox "Ставка должна быть в диапазоне [1,10000]", vbExclamation, "Орел и решка"

TextBox1.Enabled = True TextBox1.SetFocus

Exit Sub

End If

'

' Бросается монета

'

Randomize

Монета = Int(2'* Rnd)

' Сравнение результата бросания монеты компьютером

' с ситуацией, когда игрок загадал "орел"

'

If OptionButton1.Value = True Then

If Монета = 0 Then

Банк = Банк - 1

TextBox1.Text = CStr(BaHK)

End If

If Монета = 1 Then

Банк = Банк + 1

TextBox1.Text = CStr(Банк)

End If

End If

'Сравнение результата бросания монеты компьютером

' с ситуацией, когда игрок загадал "решка"

If OptionButton2.Value = True Then

IfМонета = 1 Then Банк = Банк - 1

TextBox1.Text = CStr(Банк)

End If

IfМонета = 0 Then Банк = Банк + 1

TextBox1.Text = CStr(Банк)

End If

End If TextBox2.Text = CStr(Партия)

' Определяется, превышает ли текущее значение поля Банк максимальную

' величину

'

If Банк > Максимум Then

Максимум = Банк

НомерМаксимум = Партия

TextBox3.Text = CStr(Максимум)

TextBox5.Text = CStr(НомерМаксимум)

End If

' Определяется, превышает ли минимальное значение поля Банк текущее

' значение

'

IfБанк < Минимум Then

Минимум = Банк

НомерМинимум = Партия

TextBox4.Text = CStr(Минимум)

TextBox6.Text = CStr(НомерМинимум)

End If

End Sub

'

Private Sub CommandButton2_Click()

'

' Процедура закрытия диалогового окна

'

UserForml.Hide End Sub

Private Sub UserForm_Initialize()

' Процедура инициализации диалогового окна

Максимум = 0

Минимум = 10000

Партия = 0

'

' Поле Банк доступно для ввода информации пользователем

' при инициализации диалогового окна

'

TextBox1.Enabled = True

'

' Поля Партия, Максимум, Минимум и Игра не доступны для

' ввода информации пользователем

'

TextBox2.Enabled = False

TextBox3.Enabled = False

TextBox4.Enabled = False

TextBox5.Enabled = False

TextBox6.Enabled = False

' При инициализации диалогового окна выбран переключатель Орел

OptionButton1.Value = True

End Sub

Ниже описывается, для чего предназначена каждая из процедур данной программы.

       
  UserForm_Initialize
  1. Активизирует диалоговое окно.
  1. Поле Банк доступно для ввода информации пользователем при инициализации диалогового окна.
  1. В поля Партия, Максимум, Минимум и Игра разрешен только программный ввод данных.
  1. При инициализации диалогового окна выбран переключатель орел.
 
  Нажатие кнопки Бросание монеты запускает на выполнение процедуру CommandButton1 Click
  1. В переменной партия учитывается номер очередной партии.
  1. В поле Банк разрешен только программный ввод данных. Перед началом игры первой партии проверяется, является ли вводимое данное числом в диапазоне от 1 до 10 000. Если это условие не выполняется, отображается соответствующее сообщение (рис. У 1.2), предлагающее пользователю откорректировать данные. В поле Банк снова разрешен ввод данных пользователем. После чего происходит выход из процедуры для повтора ввода данных.
  1. Генерируется бросание модели. Определяется, кто выиграл в текущей партии. Корректируется информация о максимальном и минимальном выигрыше в течение игры, если какие-то изменения в этой информации имели место. Вся информация о текущем состоянии игры отображается в полях ввода.
 
  Нажатие кнопки Отмена запускает на выполнение процедуру CommandButton2 Click Закрывает диалоговое окно.  
       

Для запуска приложения достаточно нажать кнопку Запуск подпрограммы/UserForm или выбрать команду Запуск, Запуск подпрограммы/UserForm.

На экране появится диалоговое окно игры. Игрок вводит в поле Банк сумму денег, и потом, выбирая соответствующий переключатель в группе выбор, загадывает орел или Решка. Нажатие кнопки Бросание монеты приводит к подбрасыванию компьютером монеты. Текущий счет игрока отображается в поле Банк. В поле партия выводится номер текущей партии, а в полях максимум и минимум выводятся максимальный и минимальный счет игрока втечение предыдущих партий. На рис. У 1.3 приведено диалоговое окно орел-решка на 30-м ходе игры при начальном банке в 100 единиц. Отображаемая информация в диалоговом окне Орел-Решка показывает, что 30 партий изнурительной игры принесли игроку выигрыш только в 2 единицы. Если бы игрок не жадничал и остановил игру на 18 ходе, то его выигрыш был бы в два раза больше. А если бы игрок струсил, когда стал проигрывать, и вышел из игры на 3 ходе, то его проигрыш составил бы 3 единицы.

Рис. У1.2. Возможное сообщение о неправильном вводе данных в поле Банк

Рис. У1.3. Диалоговое окно Орел-Решка


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: