2014-11-06 29 views
0

再次您好,我想知道我們如何能夠在yatzee遊戲中獲得2個最大配對。 從以前的問題,我找到一對幫助,但現在我甚至不知道。這似乎我們只需要在1對代碼的數量增加一倍,但這樣做,我只是沒有得到結果,或只是骰子在yatzhee遊戲中選擇兩個最大的配對

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 

這是如果ayone想知道的1對代碼的X4,幫助請並且感謝你:) 另外regel被用於代碼的其餘部分。

yatzee是一個遊戲,你扔5骰子,眼睛=點(你可以組合它的更多點等)。讓我們假裝你投擲(3 3 4 4 5),通過選擇它作爲一對你得到8分(4 + 4),如果你選擇它作爲兩對你得到14分(4 + 4 + 3 + 3),你可以閱讀更多這裏如果你想學習所有的規則http://en.wikipedia.org/wiki/Yahtzee它是一個非常簡單的遊戲和樂趣發揮,如果你無聊。有很多的幫助

我鱸代碼謝謝:)仍然有像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

爲什麼標籤是垃圾郵件?這似乎與VBA無關或與VisualStudio – Plutonix 2014-11-06 14:42:52

+0

isnt microsoft visual studio = vb.net?哎呦我是sry然後:( – bcil 2014-11-06 14:45:35

+0

對於那些不熟悉yatzee遊戲,請問你能解釋一下你的問題嗎? – Neolisk 2014-11-06 14:48:09

回答

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 
+0

hmm ok所以我試了一下,但似乎沒有給出正確的結果I得到這些骰子http://imgur.com/Z1my1VH(3 4 3 4 2)通過選擇2對我應該得到(3 + 3 + 4 + 4)= 14分,而是我得到8分(4 + 4)。 Sry爲最遲的回覆我的網絡決定不工作 – bcil 2014-11-06 15:18:53

+0

@bcil似乎你只是複製/粘貼到代碼...這隻返回剛纔的總和,但你想sum和sum2加在一起。 – 2014-11-06 16:52:26

+0

你我一直在玩代碼,也許我忘了添加在一起 – bcil 2014-11-06 17:04:19

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