二十一点:不会添加经销商之手

时间:2016-10-14 19:11:58

标签: vb.net

我在vb.net上的二十一点游戏有问题。这个代码我将完美地添加玩家的分数,但是当涉及到经销商的分数时,它不会。它只需要经销商的第二张卡。

用这个叫做:

addScore("p")   'add player's score
addScore("d")   'add dealer's score

这是“addScore()”:

Public Function card(player As String, index As Integer) As Label
    Try
        If player = "p" Then
            Return GroupBox1.Controls.OfType(Of Label).Where(Function(l) l.Name = "YouCard" & index.ToString()).Single()
        ElseIf player = "d" Then
            Return GroupBox1.Controls.OfType(Of Label).Where(Function(l) l.Name = "DealerCard" & index.ToString()).Single()
        End If
    Catch
        Return Nothing
    End Try
End Function

Public Sub addScore(ByVal player As String)
    Dim currScore As Integer
    Dim result As Integer = 0
    'Add Score
    For value As Integer = 1 To 7
        If card(player, value).Text = "A" AndAlso (currScore + 11) <= 21 Then
            result = currScore + 11
        ElseIf card(player, value).Text = "A" AndAlso (currScore + 1) <= 22 Then
            result = currScore + 1
        ElseIf IsNumeric(card(player, value).Text) Then
            result = currScore + CInt(card(player, value).Text)
        ElseIf card(player, value).Text = "" Then
            result = result
        Else
            result = currScore + 10
        End If
        If player = "p" Then
            YouScore.Text = result
        Else
            DealerScore.Text = result
        End If
    Next
End Sub

1 个答案:

答案 0 :(得分:1)

currScore不应该在那里。将其替换为result

Public Sub addScore(ByVal player As String)
    Dim result As Integer = 0
    'Add Score
    For value As Integer = 1 To 7
        If card(player, value).Text = "A" AndAlso (result + 11) <= 21 Then
            result = result + 11
        ElseIf card(player, value).Text = "A" AndAlso (result + 1) <= 22 Then
            result = result + 1
        ElseIf IsNumeric(card(player, value).Text) Then
            result = result + CInt(card(player, value).Text)
        ElseIf card(player, value).Text = "" Then
            result = result
        Else
            result = result + 10
        End If
        If player = "p" Then
            YouScore.Text = result
        Else
            DealerScore.Text = result
        End If
    Next
End Sub