Число задумывает пользователь, а компьютер его отгадывает - VB
Формулировка задачи:
Число задумывает пользователь, а компьютер его отгадывает. Хорошо бы, чтобы компьютер действовал не "методом тыка", а "методом научного тыка", который отличается тем, что каждый следующий тык основывается на результатах предыдущих тыков и сокращает количество возможных значений более чем на 1.
Решение задачи: «Число задумывает пользователь, а компьютер его отгадывает»
textual
Листинг программы
Dim Counter As Integer
Dim Max As Integer
Dim Min As Integer
Dim MyEvent As Boolean
Private Sub Command1_Click()
If Val(Label2.Caption) > 1 Then
Max = Val(Label2.Caption)
Label2.Caption = Try(True)
ElseIf Val(Label2.Caption) = 1 Then
Label2.Caption = "0"
MsgBox "Диапазон закончился", vbOKOnly + vbInformation, "Выходим": Unload Me
End If
End Sub
Private Sub Command2_Click()
If Val(Label2.Caption) < 99 Then
Min = Val(Label2.Caption)
Label2.Caption = Try(False)
ElseIf Val(Label2.Caption) = 99 Then
Label2.Caption = "100"
MsgBox "Диапазон закончился", vbOKOnly + vbInformation, "Выходим": Unload Me
End If
End Sub
Private Sub Command3_Click()
MsgBox "Ура! :-)", vbOKOnly + vbExclamation, "": Unload Me
End Sub
Private Sub Form_Load()
Counter = 10
Max = 100: Min = 0
Me.Caption = "Осталось попыток: " & Trim$(Str$(Counter))
MsgBox "Загадайте число от 0 до 100, а я попробую его угадать...", vbOKOnly + vbInformation, ""
Me.Show
Label2.Caption = Try(False)
End Sub
Function Try(MyEvent) As Integer
Try = (Max - Min) \ 2
If MyEvent Then
Try = Val(Label2.Caption) - Try 'много
Else
Try = Val(Label2.Caption) + Try 'мало
End If
Counter = Counter - 1
Me.Caption = "Осталось попыток: " & Trim$(Str$(Counter))
If Counter = 0 Then MsgBox "Попытки кончились. Я не угадал :-(", vbOKOnly + vbExclamation, "": End
End Function