嘿伙计们在玩二十一点时,经销商会知道ace可以是1或11,但是当它有机会将它作为1时,它就会破灭。例如:
从2个ace开始,你在技术上有2个,12个或22个。
让我们说经销商获得的第一张牌是杰克。
因此你有:a 12,a 22或32。 因此,计算机保持12的态度,并添加千斤顶使其成为22并输掉。
这是代码
def evaluateHand(self, dHand):
DValue = 0
for card in dHand:
rank = card.getRank()
if rank > 10:
rank = 10
elif rank == 1 and DValue + 11 <= 21:
rank = 11
DValue = DValue + rank
return DValue
这里是我为ace定义我的价值的地方,我很确定这是我的elif声明,但我尝试的其他任何事情都没有。 有什么建议吗?
答案 0 :(得分:2)
你手上可以有很多A,但只有一个可以在没有破坏的情况下被估价为11。
首先评估价值为1
然后,如果手的值是&lt; 12手中有一个ace,值为11时的值(手数增加10)
返回正确的手牌值。
这是一些可能的代码(由于你没有指定数据结构,所以有一些伪代码。)
def get_hand_value(self, hand):
hand_value = 0
for card in hand:
hand_value += card.get_value() # this evaluates the hand with all aces at 1
if hand_value < 12 and ace in hand: # this line is pseudocode, IDK your data structure
# it evaluates one ace (if any) at 11 (if possible w/o busting)
hand_value += 10
return hand_value