Практика
Рис. У1.1. Вид редактора Visual Basic при создании пользовательской формы для игры в орел и решка
Private Sub CommandButtonl_Click() End Sub
Конечно, редактор кода заботится о вас, создавая инструкции заголовка и окончания процедуры. Но не требуйте от него невозможного, а именно, чтобы он телепатически прочитал ваши мысли и ввел их в виде кода в тело процедуры. Код в тело процедуры кроме вас никто вводить не будет. Как это ни печально, но вы должны вводить их вручную, при этом используя интеллектуальные качества редактора кода и средства визуального программирования, которые существенно упростят процесс создания программы.
' Переменные уровня модуля
'
Dim Банк As Long
Dim Партия As Long
Dim НомерМаксимум As Long
Dim НомерМинимум As Long
Dim Максимум As Long
Dim Минимум As Long
'
Private Sub CommandButtonl_Click()
' Определяет номер очередной партии
Партия = Партия + 1
' Запрещается изменение пользователем значения
' в поле Банк в течение игры
TektBoxl.Enabled = False
'
' Проверяется, являются ли вводимыми в поле Банк данные числом
If IsNumeric(TextBoxl.Text) = False Then
MsgBox "Введите ставку", vbExclamation, "Орел и решка"
TextBoxl.Enabled = True
TextBoxl.SetFocus
Exit Sub End If Банк = CLng(TextBoxl.Text)
' Проверяется, не превышает ли Банк максимально допустимую величину
If Банк > 10000 Or Банк <= 0 Then
MsgBox "Ставка должна быть в диапазоне [1,10000]", vbExclamation, "Орел и решка"
TextBoxl.Enabled = True TextBoxl.SetFocus
Exit Sub
End If
'
' Бросается монета
'
Randomize
Монета = Int(2'* Rnd)
' Сравнение результата бросания монеты компьютером
' с ситуацией, когда игрок загадал "орел"
'
If OptionButtonl.Value = True Then
If Монета = 0 Then
Банк = Банк - 1
TextBoxl,Text = CStr(BaHK)
End If
If Монета = 1 Then
Банк = Банк + 1
TextBoxl.Text = CStr(Банк)
End If
End If
' Сравнение результата бросания монеты компьютером
' с ситуацией, когда игрок загадал "решка"
If OptionButton2.Value = True Then
If Монета = 1 Then Банк = Банк - 1
TextBoxl.Text = CStr(Банк)
End If
If Монета = 0 Then Банк = Банк + 1
TextBoxl.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
'
' Поле Банк доступно для ввода информации пользователем
' при инициализации диалогового окна
'
TextBoxl.Enabled = True
'
' Поля Партия, Максимум, Минимум и Игра не доступны для
' ввода информации пользователем
'
TextBox2.Enabled = False
TextBox3.Enabled = False
TextBox4 ..Enabled = False
TextBox5.Enabled = False
TextBox6.Enabled = False
' При инициализации диалогового окна выбран переключатель Орел
OptionButtonl.Value = True
End Sub
Ниже описывается, для чего предназначена каждая из процедур данной программы.
UserForm_Initialize |
|
||
Нажатие кнопки Бросание монеты запускает на выполнение процедуру CommandButton1 Click |
|
||
Нажатие кнопки Отмена запускает на выполнение процедуру CommandButton2 Click |
Закрывает диалоговое окно. |
||
На экране появится диалоговое окно игры. Игрок вводит в поле Банк сумму денег, и потом, выбирая соответствующий переключатель в группе выбор, загадывает орел или Решка. Нажатие кнопки Бросание монеты приводит к подбрасыванию компьютером монеты. Текущий счет игрока отображается в поле Банк. В поле партия выводится номер текущей партии, а в полях максимум и минимум выводятся максимальный и минимальный счет игрока втечение предыдущих партий. На рис. У 1.3 приведено диалоговое окно орел-решка на 30-м ходе игры при начальном банке в 100 единиц. Отображаемая информация в диалоговом окне Орел-Решка показывает, что 30 партий изнурительной игры принесли игроку выигрыш только в 2 единицы. Если бы игрок не жадничал и остановил игру на 18 ходе, то его выигрыш был бы в два раза больше. А если бы игрок струсил, когда стал проигрывать, и вышел из игры на 3 ходе, то его проигрыш составил бы 3 единицы.
Рис. У1.2. Возможное сообщение о неправильном вводе данных в поле Банк
Рис. У1.3. Диалоговое окно Орел-Решка