Я делаю программу Blackjack для своего класса программирования (используя номера только с 1 по 10 и не могу использовать глобальные переменные, причина которых выше меня). Всякий раз, когда я нажимаю butHit (кнопка «Хит»), он всегда получает ответ «Бюст: галстук», даже если значения для компьютера и вашей руки явно ниже 21. Это происходит независимо от того, что если вы нажмете butHit.Ошибка программы (дает неправильный ответ)
lblPlayV проверяет, был ли игрок нажат, но прежде, чем получить случайные значения и т. Д.
lblCounter представляет сколько раз, но нажалHit.
Я понятия не имею, что может быть неправильным.
Вот код:
Public Class Form1
Private Sub butClose_Click(sender As System.Object, e As System.EventArgs) Handles butClose.Click
End
End Sub
Private Sub butPlay_Click(sender As System.Object, e As System.EventArgs) Handles butPlay.Click
Dim rand As New Random
Dim intM1 As Integer = rand.Next(1, 11)
Dim intM2 As Integer = rand.Next(1, 11)
Dim intM3 As Integer = rand.Next(1, 11)
Dim intM4 As Integer = rand.Next(1, 11)
Dim intM5 As Integer = rand.Next(1, 11)
Dim intOP1 As Integer = rand.Next(1, 11)
Dim intOP2 As Integer = rand.Next(1, 11)
Dim intOP3 As Integer = rand.Next(1, 11)
lblPlayV.Text = 1
lblCounter.Text = 1
butPlay.Text = "Replay"
lblM1.Text = intM1
lblM2.Text = intM2
lblM3.Text = intM3
lblM4.Text = intM4
lblM5.Text = intM5
lblOP1.Text = intOP1
lblOP2.Text = intOP2
lblOP3.Text = intOP3
lblM1.Visible = True
lblM2.Visible = True
End Sub
Private Sub butHit_Click(sender As System.Object, e As System.EventArgs) Handles butHit.Click
If lblPlayV.Text = 1 Then
'<<<<<<<<<<<<<<<<<<<<<<'
If lblCounter.Text = 1 Then
lblM3.Visible = True
If lblM1.Text + lblM2.Text + lblM3.Text = 21 Then
If lblOP1.Text + lblOP2.Text + lblOP3.Text = 21 Then
MsgBox("21 : Draw")
Else
MsgBox("21 : You Win")
End If
ElseIf lblM1.Text + lblM2.Text + lblM3.Text > 21 Then
If lblOP1.Text + lblOP2.Text + lblOP3.Text > 21 Then
MsgBox("Bust : Draw")
Else
MsgBox("Bust : You Lose")
End If
Else
lblCounter.Text = lblCounter.Text + 1
End If
End If
'<<<<<<<<<<<<<<<<<<<<<<'
If lblCounter.Text = 2 Then
lblM4.Visible = True
If lblM1.Text + lblM2.Text + lblM3.Text + lblM4.Text = 21 Then
If lblOP1.Text + lblOP2.Text + lblOP3.Text = 21 Then
MsgBox("21 : Draw")
Else
MsgBox("21 : You Win")
End If
ElseIf lblM1.Text + lblM2.Text + lblM3.Text + lblM4.Text > 21 Then
If lblOP1.Text + lblOP2.Text + lblOP3.Text > 21 Then
MsgBox("Bust : Draw")
Else
MsgBox("Bust : You Lose")
End If
Else
lblCounter.Text = lblCounter.Text + 1
End If
End If
'<<<<<<<<<<<<<<<<<<<<<<'
If lblCounter.Text = 3 Then
lblM5.Visible = True
If lblM1.Text + lblM2.Text + lblM3.Text + lblM4.Text + lblM5.Text = 21 Then
If lblOP1.Text + lblOP2.Text + lblOP3.Text = 21 Then
MsgBox("21 : Draw")
Else
MsgBox("21 : You Win")
End If
ElseIf lblM1.Text + lblM2.Text + lblM3.Text + lblM4.Text + lblM5.Text > 21 Then
If lblOP1.Text + lblOP2.Text + lblOP3.Text > 21 Then
MsgBox("Bust : Draw")
Else
MsgBox("Bust : You Lose")
End If
Else
If lblM1.Text + lblM2.Text + lblM3.Text + lblM4.Text + lblM5.Text = lblOP1.Text + lblOP2.Text + lblOP3.Text Then
MsgBox("Draw")
ElseIf lblM1.Text + lblM2.Text + lblM3.Text + lblM4.Text + lblM5.Text > lblOP1.Text + lblOP2.Text + lblOP3.Text Then
MsgBox("You Win")
Else
MsgBox("You Lose")
End If
End If
lblCounter.Text = 0
lblPlayV.Text = 0
End If
'<<<<<<<<<<<<<<<<<<<<<<'
End If
End Sub
Private Sub ButStand_Click(sender As System.Object, e As System.EventArgs) Handles ButStand.Click
If lblPlayV.Text = 1 Then
lblPlayV.Text = 0
If lblM3.Visible = False Then
If lblM1.Text + lblM2.Text = lblOP1.Text + lblOP2.Text + lblOP3.Text Then
MsgBox("Tie")
ElseIf lblM1.Text + lblM2.Text > lblOP1.Text + lblOP2.Text + lblOP3.Text Then
MsgBox("You Win")
Else
MsgBox("You Lose")
End If
End If
If lblCounter.Text = 1 Then
If lblM1.Text + lblM2.Text + lblM3.Text = lblOP1.Text + lblOP2.Text + lblOP3.Text Then
MsgBox("Tie")
ElseIf lblM1.Text + lblM2.Text + lblM3.Text > lblOP1.Text + lblOP2.Text + lblOP3.Text Then
MsgBox("You Win")
Else
MsgBox("You Lose")
End If
End If
If lblCounter.Text = 2 Then
If lblM1.Text + lblM2.Text + lblM3.Text + lblM4.Text = lblOP1.Text + lblOP2.Text + lblOP3.Text Then
MsgBox("Tie")
ElseIf lblM1.Text + lblM2.Text + lblM3.Text + lblM4.Text > lblOP1.Text + lblOP2.Text + lblOP3.Text Then
MsgBox("You Win")
Else
MsgBox("You Lose")
End If
End If
If lblCounter.Text = 3 Then
If lblM1.Text + lblM2.Text + lblM3.Text + lblM4.Text + lblM5.Text = lblOP1.Text + lblOP2.Text + lblOP3.Text Then
MsgBox("Tie")
ElseIf lblM1.Text + lblM2.Text + lblM3.Text + lblM4.Text + lblM5.Text > lblOP1.Text + lblOP2.Text + lblOP3.Text Then
MsgBox("You Win")
Else
MsgBox("You Lose")
End If
End If
End If
End Sub
End Class
использовать ваш отладчик. –
вот что я делаю. Я не могу найти причину, почему она приходит к одному и тому же результату каждый раз, независимо от ситуации. – dfgsdfg
убедитесь, что вы добавляете строки. которые будут конкатенировать их, а не суммировать значения как целые числа. – 1010