有人可以帮我把Aces加入到我的二十一点程序中

时间:2015-10-27 17:04:23

标签: vb.net blackjack

我一直在尝试创建一个简单的二十一点游戏,用户选择卡片并决定是否击中或坚持,如果他们的牌超过21他们输了。但我不知道如何添加ace,以便程序将选择ace是1还是11。 请帮忙 这是我的代码

Module Module1

Sub Main()
    Dim cards(4, 13) As Integer

    Dim value As Integer
    Dim value2 As Integer
    Dim royal As String
    Dim suit As String
    Dim card1 As Integer
    Dim card2 As Integer
    Dim card3 As Integer
    Dim card4 As Integer
    Dim card5 As Integer
    Dim card6 As Integer
    Dim card7 As Integer
    Dim answer As String
    Dim total As Integer

    Randomize()
    value = (3 * Rnd()) + 1
    value2 = (11 * Rnd()) + 1

    'suits: 1= hearts
    '2= diamonds
    '3=spades
    '4=clubs
    cards(1, 1) = 2
    cards(2, 1) = 2
    cards(3, 1) = 2
    cards(4, 1) = 2
    cards(1, 2) = 3
    cards(2, 2) = 3
    cards(3, 2) = 3
    cards(4, 2) = 3
    cards(1, 3) = 4
    cards(2, 3) = 4
    cards(3, 3) = 4
    cards(4, 3) = 4
    cards(1, 4) = 5
    cards(2, 4) = 5
    cards(3, 4) = 5
    cards(4, 4) = 5
    cards(1, 5) = 6
    cards(2, 5) = 6
    cards(3, 5) = 6
    cards(4, 5) = 6
    cards(1, 6) = 7
    cards(2, 6) = 7
    cards(3, 6) = 7
    cards(4, 6) = 7
    cards(1, 7) = 8
    cards(2, 7) = 8
    cards(3, 7) = 8
    cards(4, 7) = 8
    cards(1, 8) = 9
    cards(2, 8) = 9
    cards(3, 8) = 9
    cards(4, 8) = 9
    cards(1, 9) = 10
    cards(2, 9) = 10
    cards(3, 9) = 10
    cards(4, 9) = 10
    'jacks
    cards(1, 10) = 10
    cards(2, 10) = 10
    cards(3, 10) = 10
    cards(4, 10) = 10
    'queens
    cards(1, 11) = 10
    cards(2, 11) = 10
    cards(3, 11) = 10
    cards(4, 11) = 10
    'kings
    cards(1, 12) = 10
    cards(2, 12) = 10
    cards(3, 12) = 10
    cards(4, 12) = 10



    If value2 = 1 Then
        royal = "2"
    ElseIf value2 = 2 Then
        royal = "3"
    ElseIf value2 = 3 Then
        royal = "4"
    ElseIf value2 = 4 Then
        royal = "5"
    ElseIf value2 = 5 Then
        royal = "6"
    ElseIf value2 = 6 Then
        royal = "7"
    ElseIf value2 = 7 Then
        royal = "8"
    ElseIf value2 = 8 Then
        royal = "9"
    ElseIf value2 = 9 Then
        royal = "10"
    ElseIf value2 = 10 Then
        royal = "jack"
    ElseIf value2 = 11 Then
        royal = "queen"
    ElseIf value2 = 12 Then
        royal = "king"


    End If

    If value = 1 Then
        suit = "hearts"
    ElseIf value = 2 Then
        suit = "diamonds"
    ElseIf value = 3 Then
        suit = "spades"
    ElseIf value = 4 Then
        suit = "clubs"

    End If
    Console.WriteLine("your first card is the {0} of {1}", royal, suit)
    card1 = cards(value, value2)

    value = (3 * Rnd()) + 1
    value2 = (11 * Rnd()) + 1
    If value2 = 1 Then
        royal = "2"
    ElseIf value2 = 2 Then
        royal = "3"
    ElseIf value2 = 3 Then
        royal = "4"
    ElseIf value2 = 4 Then
        royal = "5"
    ElseIf value2 = 5 Then
        royal = "6"
    ElseIf value2 = 6 Then
        royal = "7"
    ElseIf value2 = 7 Then
        royal = "8"
    ElseIf value2 = 8 Then
        royal = "9"
    ElseIf value2 = 9 Then
        royal = "10"
    ElseIf value2 = 10 Then
        royal = "jack"
    ElseIf value2 = 11 Then
        royal = "queen"
    ElseIf value2 = 12 Then
        royal = "king"
    End If
    If value = 1 Then
        suit = "hearts"
    ElseIf value = 2 Then
        suit = "diamonds"
    ElseIf value = 3 Then
        suit = "spades"
    ElseIf value = 4 Then
        suit = "clubs"
    End If
    Console.WriteLine("your second card is the {0} of {1}", royal, suit)
    card2 = cards(value, value2)
    Console.ReadKey()
    total = card1 + card2
    If total > 21 Then
        Console.WriteLine("You lose")
        Console.ReadLine()
    Else
        Console.WriteLine("Do you want to hit or stick?")
        answer = Console.ReadLine
        If answer = "hit" Then
            value = (3 * Rnd()) + 1
            value2 = (11 * Rnd()) + 1
            If value2 = 1 Then
                royal = "2"
            ElseIf value2 = 2 Then
                royal = "3"
            ElseIf value2 = 3 Then
                royal = "4"
            ElseIf value2 = 4 Then
                royal = "5"
            ElseIf value2 = 5 Then
                royal = "6"
            ElseIf value2 = 6 Then
                royal = "7"
            ElseIf value2 = 7 Then
                royal = "8"
            ElseIf value2 = 8 Then
                royal = "9"
            ElseIf value2 = 9 Then
                royal = "10"
            ElseIf value2 = 10 Then
                royal = "jack"
            ElseIf value2 = 11 Then
                royal = "queen"
            ElseIf value2 = 12 Then
                royal = "king"
            End If
            If value = 1 Then
                suit = "hearts"
            ElseIf value = 2 Then
                suit = "diamonds"
            ElseIf value = 3 Then
                suit = "spades"
            ElseIf value = 4 Then
                suit = "clubs"
            End If
            Console.WriteLine("your card is the {0} of {1}", royal, suit)
            card3 = cards(value, value2)
            Console.ReadKey()
            total = card1 + card2 + card3
            If total > 21 Then
                Console.WriteLine("You lose")
                Console.ReadLine()
            Else
                Console.WriteLine("Do you want to hit or stick?")
                answer = Console.ReadLine
                If answer = "hit" Then
                    value = (3 * Rnd()) + 1
                    value2 = (11 * Rnd()) + 1
                    If value2 = 1 Then
                        royal = "2"
                    ElseIf value2 = 2 Then
                        royal = "3"
                    ElseIf value2 = 3 Then
                        royal = "4"
                    ElseIf value2 = 4 Then
                        royal = "5"
                    ElseIf value2 = 5 Then
                        royal = "6"
                    ElseIf value2 = 6 Then
                        royal = "7"
                    ElseIf value2 = 7 Then
                        royal = "8"
                    ElseIf value2 = 8 Then
                        royal = "9"
                    ElseIf value2 = 9 Then
                        royal = "10"
                    ElseIf value2 = 10 Then
                        royal = "jack"
                    ElseIf value2 = 11 Then
                        royal = "queen"
                    ElseIf value2 = 12 Then
                        royal = "king"
                    End If
                    If value = 1 Then
                        suit = "hearts"
                    ElseIf value = 2 Then
                        suit = "diamonds"
                    ElseIf value = 3 Then
                        suit = "spades"
                    ElseIf value = 4 Then
                        suit = "clubs"
                    End If


                    Console.WriteLine("your card is the {0} of {1}", royal, suit)
                    card4 = cards(value, value2)
                    Console.ReadKey()
                    total = card1 + card2 + card3 + card4
                    If total > 21 Then
                        Console.WriteLine("You lose")
                        Console.ReadLine()
                    Else
                        Console.WriteLine("Do you want to hit or stick?")
                        answer = Console.ReadLine
                        If answer = "hit" Then
                            value = (3 * Rnd()) + 1
                            value2 = (11 * Rnd()) + 1
                            If value2 = 1 Then
                                royal = "2"
                            ElseIf value2 = 2 Then
                                royal = "3"
                            ElseIf value2 = 3 Then
                                royal = "4"
                            ElseIf value2 = 4 Then
                                royal = "5"
                            ElseIf value2 = 5 Then
                                royal = "6"
                            ElseIf value2 = 6 Then
                                royal = "7"
                            ElseIf value2 = 7 Then
                                royal = "8"
                            ElseIf value2 = 8 Then
                                royal = "9"
                            ElseIf value2 = 9 Then
                                royal = "10"
                            ElseIf value2 = 10 Then
                                royal = "jack"
                            ElseIf value2 = 11 Then
                                royal = "queen"
                            ElseIf value2 = 12 Then
                                royal = "king"
                            End If
                            If value = 1 Then
                                suit = "hearts"
                            ElseIf value = 2 Then
                                suit = "diamonds"
                            ElseIf value = 3 Then
                                suit = "spades"
                            ElseIf value = 4 Then
                                suit = "clubs"
                            End If

                            Console.WriteLine("your card is the {0} of {1}", royal, suit)
                            card5 = cards(value, value2)
                            Console.ReadKey()
                            total = card1 + card2 + card3 + card4 + card5
                            If total > 21 Then
                                Console.WriteLine("You lose")
                                Console.ReadLine()
                            Else
                                Console.WriteLine("Do you want to hit or stick?")
                                answer = Console.ReadLine
                                If answer = "hit" Then
                                    value = (3 * Rnd()) + 1
                                    value2 = (11 * Rnd()) + 1
                                    If value2 = 1 Then
                                        royal = "2"
                                    ElseIf value2 = 2 Then
                                        royal = "3"
                                    ElseIf value2 = 3 Then
                                        royal = "4"
                                    ElseIf value2 = 4 Then
                                        royal = "5"
                                    ElseIf value2 = 5 Then
                                        royal = "6"
                                    ElseIf value2 = 6 Then
                                        royal = "7"
                                    ElseIf value2 = 7 Then
                                        royal = "8"
                                    ElseIf value2 = 8 Then
                                        royal = "9"
                                    ElseIf value2 = 9 Then
                                        royal = "10"
                                    ElseIf value2 = 10 Then
                                        royal = "jack"
                                    ElseIf value2 = 11 Then
                                        royal = "queen"
                                    ElseIf value2 = 12 Then
                                        royal = "king"
                                    End If
                                    If value = 1 Then
                                        suit = "hearts"
                                    ElseIf value = 2 Then
                                        suit = "diamonds"
                                    ElseIf value = 3 Then
                                        suit = "spades"
                                    ElseIf value = 4 Then
                                        suit = "clubs"
                                    End If


                                    Console.WriteLine("your card is the {0} of {1}", royal, suit)
                                    card6 = cards(value, value2)
                                    Console.ReadKey()
                                    total = card1 + card2 + card3 + card4 + card5 + card6
                                    If total > 21 Then
                                        Console.WriteLine("You lose")
                                        Console.ReadLine()
                                    Else
                                        Console.WriteLine("Do you want to hit or stick?")
                                        answer = Console.ReadLine
                                        If answer = "hit" Then
                                            value = (3 * Rnd()) + 1
                                            value2 = (11 * Rnd()) + 1
                                            If value2 = 1 Then
                                                royal = "2"
                                            ElseIf value2 = 2 Then
                                                royal = "3"
                                            ElseIf value2 = 3 Then
                                                royal = "4"
                                            ElseIf value2 = 4 Then
                                                royal = "5"
                                            ElseIf value2 = 5 Then
                                                royal = "6"
                                            ElseIf value2 = 6 Then
                                                royal = "7"
                                            ElseIf value2 = 7 Then
                                                royal = "8"
                                            ElseIf value2 = 8 Then
                                                royal = "9"
                                            ElseIf value2 = 9 Then
                                                royal = "10"
                                            ElseIf value2 = 10 Then
                                                royal = "jack"
                                            ElseIf value2 = 11 Then
                                                royal = "queen"
                                            ElseIf value2 = 12 Then
                                                royal = "king"
                                            End If
                                            If value = 1 Then
                                                suit = "hearts"
                                            ElseIf value = 2 Then
                                                suit = "diamonds"
                                            ElseIf value = 3 Then
                                                suit = "spades"
                                            ElseIf value = 4 Then
                                                suit = "clubs"
                                            End If

                                            Console.WriteLine("your card is the {0} of {1}", royal, suit)
                                            card7 = cards(value, value2)
                                            Console.ReadKey()
                                            total = card1 + card2 + card3 + card4 + card5 + card6 + card7
                                        ElseIf answer = "stick" Then
                                            Console.WriteLine("your final score is {0}", total)
                                            Console.ReadLine()

                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If




    End Sub

End Module

2 个答案:

答案 0 :(得分:0)

使用如下规则:Aces值11,除非总数超过21,然后它们值1.您必须重新计算手中每个ace的总数,直到总数小于或等于21。不是一个真正的最佳策略,但足以学习如何编码。

答案 1 :(得分:0)

要记住的是,没有" CHOICE"将ace计为1或11.这是由手严格决定的。将所有的A数量计为1.然后,如果手牌包含一个或多个A,总数小于12,则添加10.即可。只有一个ace可以算作11,只有当它必须被计算在内时。

编程二十一点的真正棘手的部分是要记住你需要跟踪手的总数和一些额外的信息,以表明总数是否是"软"或不(如果你加上上面的10,它很软)。