txth = ""
'очистка текстового поля подсчета количества ходов
txtB1 = "": txtK1 = "": txtB2 = "": txtK2 = ""
'очистка полей информирующих о количестве быков и коров
If optComputer Then txtSecNum2 = getnum: txtGetNum2 = getnum
'если играет компьютер, заполняем поля случайными числами
If optPlayer Then: txtGetNum2 = "": txtSecNum2 = ""
'если играет человек, очищаем поля
End Sub
Private Sub cmdStep_Click()
'Кнопка шага
Dim i, a As Integer, j As Integer
'переменные -счетчики
a = Val(txth.Text)
txth = a + 1
'подсчет количества ходов
txtB1 = "0": txtK1 = "0": txtB2 = "0": txtK2 = "0"
'обнуление полей, информирующих о количестве быков и коров
For i = 1 To 4
'цикл проверки количества быков у игрока 1
If Mid(txtGetNum1, i, 1) = Mid(txtSecNum2, i, 1) Then txtB1 = Val(txtB1) + 1
'если есть совпадение цифры и позиции то увеличиваем количество быков на 1
Next i
For i = 1 To 4
For j = 1 To 4
'цикл проверки количества коров у игрока 1
If Mid(txtGetNum1, i, 1) = Mid(txtSecNum2, j, 1) And i <> j Then txtK1 = Val(txtK1) + 1
'если есть совпадение цифры то увеличиваем количество коров на 1
Next j
Next i
For i = 1 To 4
'цикл проверки количества быков у игрока 2
If Mid(txtGetNum2, i, 1) = Mid(txtSecNum1, i, 1) Then txtB2 = Val(txtB2) + 1
'если есть совпадение цифры и позиции то увеличиваем количество быков на 1
Next i
For i = 1 To 4
For j = 1 To 4
'цикл проверки количества коров у игрока 2
If Mid(txtGetNum2, i, 1) = Mid(txtSecNum1, j, 1) And i <> j Then txtK2 = Val(txtK2) + 1
'если есть совпадение цифры то увеличиваем количество коров на 1
Next j
Next i
If txtB1 = "4" And txtB2 = "4" Then txtSecNum1.PasswordChar = "": txtSecNum2.PasswordChar = ""
'если числа отгаданы убираем маскировочный символ
If txtB1 = "4" And txtB2 = "4" Then MsgBox "Ничья!": cmdNewGame_Click: Exit Sub
'если оба игрока набрали по 4 быка, объявляем ничью
If txtB1 = "4" Then txtSecNum1.PasswordChar = "": txtSecNum2.PasswordChar = ""
'если числа отгаданы убираем маскировочный символ
If txtB1 = "4" Then MsgBox "Игрок 1 победил!": cmdNewGame_Click: Exit Sub
'если игрок 1 набрал 4 быка, объявляем его победу
If txtB2 = "4" Then txtSecNum1.PasswordChar = "": txtSecNum2.PasswordChar = ""
'если числа отгаданы убираем маскировочный символ
If txtB2 = "4" Then MsgBox fPlayer2.Caption + " победил!": cmdNewGame_Click: Exit Sub
'если игрок 2 набрал 4 быка, объявляем его победу
If optComputer Then txtGetNum2 = getnum
'генерация случайного числа для следующего хода компьютера
End Sub
Function getnum() As String
'генерация случайного четырехзначного числа
Dim i As Integer
'переменная-счетчик
Dim s As String
'временная строковая переменная
Randomize (Timer)
'инициализация генератора случайных чисел
m1:
s = Int(Rnd * 10)
'генерация случайного числа
If Len(getnum) = 0 And s = 0 Then GoTo m1
'если первая цифра 0, повторяем генерацию
For i = 1 To Len(getnum)
If s = Mid(getnum, i, 1) Then GoTo m1
'если цифры совпадают, повторяем генерацию
Next i
getnum = getnum + s
'прибавляем сгенерированную числу к создаваемому числу
If Len(getnum) < 4 Then GoTo m1
'если не достигли желаемой длины числа, продолжаем генерацию
End Function
Private Sub Form_Load()
'загрузка формы
optPlayer = False
optComputer = False
'убираем флажки выбора режима игры (игрок, компьютер)
End Sub
Private Sub optComputer_Click()
'выбор режима игры "против компьютера"
fPlayer2.Caption = "Компьютер"
cmdNewGame_Click
'начало новой игры
End Sub
Private Sub optPlayer_Click()
'выбор режима игры "против игрока"
fPlayer2.Caption = "Игрок 2"
cmdNewGame_Click
'начало новой игры