Постановка задачи
Разработать программу,
запустив которую вы или пользователь
могли бы играть с компьютером в «Угадай
число». А именно, пользователь нажимает кнопку «Загадай!», компьютер генерирует и запоминает какое-то
число, Пользователь вводит свое число, программа сравнивает оба числа и выдает
реплику, например, «Ваше число меньше». Пользователь вводит большее число,
программа говорит, например, «Ваше число больше». Пользователь вводит меньшее
число и так до тех пор, пока не угадает. Спортивный интерес заключается в том,
чтобы отгадать число за минимальное
количество (6-7) попыток (см. рисунок).
if
условие then
End if
if
условие then [выражение1]
else [выражение2]
Выражение Randomize и
Функция Rnd.
Часто, особенно в играх и обучалках, используют численные переменные со
случайной величиной. Выражение Randomize запускает
генератор случайных чисел, обычно его помещают в процедуре инициализации или в
начале процедуры, в которой используются случайные числа. Для создания
случайных чисел в определенном диапазоне применяют функцию Rnd.
Выражение Int(Число*Rnd) возвращает
целые случайные числа в диапазоне от
0 до значения Число-1
Выражение 1 + Int(First * Rnd) -
возвращает целые случайные числа в диапазоне от 1 до значения Число.
Вы также
узнаете, насколько важен порядок
действий пользователя.
Рекомендуемый план разработки программы
1. Запустите
Visual Basic и выберите стандартную форму.
-
щелкните
дважды по кнопке – войдете в заготовку процедуры. Наберите в ней код, выделенный жирным
шрифтом, и комментарии:
Private Sub Command1_Click()
A = 1 + Int(100 * Rnd) ‘Здесь 1 и 100 –диапазон случайных
чисел
Label4.Caption = Str(A) ‘Эту строку убрать после отладки программы!
End Sub
-
В разделе (General) объявите букву А
как целочисленную переменную:
Примечание. Здесь А – число, Label4.Caption – строковое свойство. Поэтому А приходится
преобразовывать в строку. Это вы сделали с помощью функции Str( ). Обратная операция
(преобразования строкового выражения в число) выполняется функцией Val() (пример см. в п. 7).
Private Sub Command2_Click()
B = Val (Text1.Text) ‘ в переменной В сохранить число, введенное в TextBox
‘Если
А=В, то в метку4 поместить "Вы
УГАДАЛИ!"
If A = B Then
Label4.Caption = "Вы
УГАДАЛИ!"
If A > B Then Label4.Caption = "Ваше
число МЕНЬШЕ."
If A < B Then Label4.Caption = "Ваше
число БОЛЬШЕ."
End Sub
Обратите внимание на операторы условия. Они здесь выражены без окончания End if, т.к. каждый из них
написан в одной строке.
Сохраните ваш проект опять и протестируйте его. Ваша программа стала проявлять логику, интеллект! Пора научить компьютер считать число попыток угадывания.
Добавьте в конец процедуры Command2 следующие строки:
P = P + 1 ‘Счетчик числа попыток (или
числа заходов в процедуру)
If A = B
Then
Label5.Caption =
"Вы угадали число за " + Str(P) + "
попыток(ки)."
End if
Обратите внимание в коде на оператор условия If – Then – End if. Так как в целом оператор выражен в несколько
строк, в виде блока, то в конце блока пишут End if.
Чтобы счетчик считал правильно, надо
переменную Р объявить в разделе General (так же, как и переменную А), а также придать ей
значение, равное 0. Лучше всего обнулить P в процедуре
Command1_Click(),
добавив в нее строку
Р = 0
Text1.Enabled = False
Нажатие на кнопку «Загадай» должно
сделать доступным поле ввода, а саму эту кнопку - недоступной до полного
отгадывания задуманного числа:
Text1.Enabled = True
После отгадывания задуманного числа
надо опять все привести в исходное состояние, то есть обеспечить доступ к
кнопке «Загадай» и сделать недоступным поле ввода (а лучше еще и кнопку OK):
Text1.Enabled = False
if Text1.Text = “
” then ‘Если строка пустая, то
MsgBox(“Введите,
пожалуйста, число.”)
‘подсказать,
Exit Sub ‘прервать ход программы и выйти в исходное
положение
End if
Найдите правильное место этого кода и вставьте
его.
Подсказка. Введите пустую строку (Text1.text = ” ”) в соответствующую процедуру.
Сделайте аналогичную операцию для меток Label4 и Label5 на момент угадывания задуманного числа.
Важно сделать вставки в правильные места
соответствующих процедур.
Подсказка. Введите в процедуру кнопки
выражение Text1.SetFocus.
Подсказка: можно дополнить текст в Label3 таким образом:
If A > B Then Label4.Caption = "Ваше число
МЕНЬШЕ. Число попыток - " + Str(P)
If A < B Then Label4.Caption = "Ваше число
БОЛЬШЕ. Число попыток - " + Str(P)