【发布时间】:2016-08-05 10:04:23
【问题描述】:
嘿伙计们,玩二十一点时,庄家知道 A 可以是 1 或 11,但是当它有机会将其打成 1 时,它就失败了。例如:
从 2 个 A 开始,从技术上讲,您有 2、12 或 22。
假设庄家拿到的第一张牌是杰克。
因此,您有:12、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 语句中,但我尝试的其他方法都没有。 有什么建议吗?
【问题讨论】:
-
小建议:将
card.getRank()改为使用属性,并将其命名为rank。创建一个名为hand_value的新属性,用于处理卡的评估 (1-10)。你的牌应该知道它们的价值,你的牌不应该关心它们的等级(除了 A 必须是特殊情况) -
考虑一个类似于this的
card.py