在yahtzee游戏中选择两个最大的对

时间:2014-11-06 14:41:24

标签: vb.net

再次问好,我想知道如何在yatzee游戏中获得2对最大的对。 从前一个问题我找到一对,但现在我甚至不知道。看起来我们只需要将1对代码中的金额加倍,但这样做我只是没有结果或只是骰子的x4

   Public Function parVerdier1(ByVal regel As Integer, tall As Object)
    Dim sum As Integer = 0

    For i As Integer = 0 To 4
        For j As Integer = (i + 1) To 4
            If tall(i) = tall(j) Then
                If tall(i) + tall(j) > sum Then
                    sum = tall(i) + tall(j)
                End If
            End If
        Next
    Next
    Return sum
End Function

这是1对代码,如果有人想知道,请帮忙,谢谢你:) 此外,regel还会在其余代码中使用。

yatzee是一个游戏,你扔5个骰子,眼睛=点(你可以组合它以获得更多积分等)。我假装你扔了(3 3 4 4 5),通过选择一对你得到8分(4 + 4),如果你选择两对你得到14分(4 + 4 + 3 + 3)你可以阅读更多在这里,如果你想学习所有规则http://en.wikipedia.org/wiki/Yahtzee,这是一个非常简单的游戏,如果你感到无聊,你可以玩得很开心。

我的lates代码有很多帮助谢谢:)当我得到这些骰子时,我仍然遇到了http://imgur.com/ExpBb2Q等问题我得到了40分......

    Public Function parVerdier2(ByVal regel As Integer, tall As Object)

    Dim sum As Integer = 0
    Dim sum2 As Integer = 0
    For o As Integer = 0 To 4
        For l As Integer = (o + 1) To 4
            For i As Integer = (l + 1) To 4
                For j As Integer = (i + 1) To 4
                    If tall(i) = tall(j) And tall(o) = tall(l) Or tall(i) = tall(o) And tall(j) = tall(l) Or tall(i) = tall(l) And tall(j) = tall(o) Then
                        If tall(i) + tall(j) + tall(o) + tall(l) > sum Then
                            sum2 = sum
                            sum = tall(i) + tall(j) + tall(o) + tall(l)
                        ElseIf tall(i) + tall(j) + tall(o) + tall(l) > sum2 Then
                            sum2 = tall(i) + tall(j) + tall(o) + tall(l)
                        End If
                    End If
                Next
            Next
        Next
    Next
    sum += sum2
    Return sum
 End Function

2 个答案:

答案 0 :(得分:1)

你只需要另一个变量来获得第二大数额:

Public Function parVerdier1(ByVal regel As Integer, tall As Object)

    Dim sum As Integer = 0
    Dim sum2 As Integer = 0

    For i As Integer = 0 To 4
        For j As Integer = (i + 1) To 4
            If tall(i) = tall(j) Then
                If tall(i) + tall(j) > sum Then
                    sum2 = sum
                    sum = tall(i) + tall(j)
                Else If tall(i) + tall(j) > sum2 Then
                    sum2 = tall(i) + tall(j)
                End If 

            End If
        Next
    Next
    Return sum + sum2
End Function

答案 1 :(得分:0)

您可以使用Linq获得最大总和的两对:

Public Shared Sub Main()
    Dim dieValues() As Integer = {3, 3, 4, 4, 5}

    Dim pairs = dieValues.GroupBy(Function(i) i).
                          Where(Function(g) g.Count() = 2).
                          OrderByDescending(Function(g) g.Sum()).
                          Select(Function(g) New With {.Value = g.Key, .Sum = g.Sum()}).
                          Take(2)


    For Each g In pairs
        Console.WriteLine("{0}: {1}", g.Key, g.Sum)
    Next

    Console.ReadLine()

End Sub

输出:

4: 8
3: 6