0
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
'currScore'는 절대 값이 지정되지 않으므로 항상 0입니다. 그것의 요점은 무엇입니까? – djv
모든 플레이어와 딜러 카드가'GroupBox1'에 있습니까? – djv
예, 모두 GroupBox1에 있습니다. 두 번째 카드가 항상 공개되어 있기 때문에 딜러의 첫 번째 카드가 표시됩니다 ... 그러면 딜러의 점수를 얻기 위해 addScore ("d")가 호출되지만 딜러의 두 번째 카드 x 2에 항상 표시됩니다. 그가 2와 8을 가졌다면 어떤 이유로 16이 올 것입니다. – rsprodftw1