我的班级编程项目是创建一个程序,允许您输入数字和字母来指定卡号和套装(例如2和D = 2的钻石)。
这就是它的样子: Poker
这是我到目前为止的代码:
Public Class frmPoker
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
Dim cards(4) As Integer
Dim suit(4) As String
cards(0) = CInt(txtCard1.Text)
cards(1) = CInt(txtCard2.Text)
cards(2) = CInt(txtCard3.Text)
cards(3) = CInt(txtCard4.Text)
cards(4) = CInt(txtCard5.Text)
Dim card = From item In cards
Select item
Distinct
If card.Count = 4 Then
txtDisplay.Text = "One Pair"
ElseIf card.Count = 3 Then
txtDisplay.Text = "Three of a kind"
ElseIf card.Count = 2 Then
txtDisplay.Text = "Four of a kind"
End If
suit(0) = txtSuit1.Text
suit(1) = txtSuit2.Text
suit(2) = txtSuit3.Text
suit(3) = txtSuit4.Text
suit(4) = txtSuit5.Text
Dim suits = From item In suit
Select item
Distinct
If suits.Count = 1 Then
txtDisplay.Text = "Flush"
End If
我不确定如何确定满屋和同花顺。此外,如果有两个2和两个3,程序将确定实际上是三个。
答案 0 :(得分:1)
你永远不应该使用你不理解的代码。例如:
Dim card = From item In cards
Select item
Distinct
这会告诉你手中不同的牌,但不会分别有多少牌。手{2, 2, 3, 2, 3}
提供与{9, 10, 9, 9, 9}
相同的结果。实际上,旅行{3, 3, 3, 2, 7}
的结果与2对{3, 3, 2, 2, 7}
的结果相同。那里没有足够的信息来满足您的需求。
这是一个替代方案(注意:假设一张5张牌,并且Aces Hi开始):
' dont use 0th; Ace=1 and 14
Dim counts(15) As Int32
' count how many of each rank:
For Each n As Int32 In cards
counts(n) += 1
Next
最后,每个元素都会告诉你每个等级有多少。例如,count(2)
可以保持值3,表示有3个Deuces。然后迭代数组以评估:
Dim pairs As Int32 = 0
Dim trips As Int32 = 0
Dim quads As Int32 = 0
' count them:
For Each n As Int32 In counts
If n = 2 Then pairs += 1
If n = 3 Then trips += 1
If n = 4 Then quads += 1
Next
Dim Aced = counts(14) > 0
这涵盖了很多人的手。你还需要知道是否有一个Ace,这样你以后可以测试一个轮子({A,2,3,4,5})。冲洗在两个地方发挥作用,所以只需设置一个标志:
Dim Flushed = Suits(0) = Suits(1) AndAlso
Suits(0) = Suits(2) AndAlso
Suits(0) = Suits(3) AndAlso
Suits(0) = Suits(4)
由于必须检查无序集的顺序,所以直接更难做。首先,按顺序查看该序列是否与制造的序列匹配。有些研究需要留给你,但Enumerable
会创建比较范围;使用Array.Intersect
或.SequenceEqual
对其进行测试,或者只执行类似Flushed
的代码。
如果(成对+旅行+四边形> 0),可以跳过直接和冲洗测试 ,但它们非常简单,只需收集手的所有指标并执行一系列{ {1}}最后的测试使代码更容易调试。
Aces让它变得混乱。如果有Ace,则需要检查Wheel:将count(14)复制到count(1)并将count(14)设置为零。然后再次排序并检查序列。在那之后,只需按从高到低的顺序评估这些变量。这些练习留给学生。