BlackJack Project - 无法将ace从11更改为1
我目前正在Visual Basic中为我在学校的项目制作二十一点游戏。BlackJack Project - 无法将ace从11更改为1
在大酒杯,当你有王牌(初始值11),其值变为1时的卡的总价值为> 21码,这将只是把每一个ACE
我走10米坚持这一点。
这是我有(即不工作)的代码:
Do While PlayerValue > 21 And counter <= noAcesPlayer
counter += 1
PlayerValue -= 10
Loop
在塞纳里奥,我有:2,8,A,8(= 29) 但是,由于有一个Ace,并且总值大于21,则应该从中减去10(= 19) - 上述代码不会执行此操作。
另一种情形将是10,8,A,A(= 40) 再次,两个A应该变成1的,由于总值> 21,给20
任何帮助,将不胜感激。 :)
这里有一个方法
Public Enum CardFace
None
Ace
Two
Three
Four
Five
Six
Seven
Eight
Nine
Ten
Jack
Queen
King
End Enum
此代码应产生二十
Dim cards As New List(Of CardFace) From {CardFace.Ten, CardFace.Eight, CardFace.Ace, CardFace.Ace}
Dim total As Integer = 0
Dim numofAces As Integer = 0
For Each c As CardFace In cards
Debug.WriteLine(c.ToString)
If c = CardFace.Ace Then
numofAces += 1
Else
total += c
End If
Next
If numofAces > 0 Then
If total + 11 + (numofAces - 1) > 21 Then
total += numofAces
Else
total += 11 + (numofAces - 1)
End If
End If
Debug.WriteLine(total)
我会尽快尝试。谢谢回复。 :) –
嗨,谢谢你!你给我的代码非常有用(做了一些修改 - 没什么大不了)。辉煌。不要你太大了! –
不是太棒了,只是模仿人们在想什么时做的事情。 – dbasnett
值,以建立一个手牌的正确方式如下(在伪代码):
Variables: total = 0, soft-flag = false
For each card in hand:
Add card value to total. Faces are 10, aces are 1.
If the card you added was an ace, set soft-flag = true
If total < 12 and soft-flag:
Add 10 to total
Else:
set soft-flag = false
就是这样。只有一个循环遍布卡片,没有外部变量,并且剩下总值和一个标志,指示总数是否很小。
您在两个示例中获得了什么值,而不是正确的值?使用调试器时,'PlayerValue'和'counter'是否具有正确的初始值? – SolarBear
我的猜测是'counter'或'noAcesPlayer'(我们都猜猜它们是什么)没有你认为它的价值,所以循环从不输入。使用一个断点来检查它们的值。 – Plutonix
同意@Plutonix。你在循环之前/之后重置了“计数器”吗? '计数器= 0' – Steve