gpt4 book ai didi

python - 我如何将 21 点牌组中的 'Ace' 定义为 11 或 1?

转载 作者:行者123 更新时间:2023-12-01 13:15:10 28 4
gpt4 key购买 nike

我正在尝试制作二十一点游戏。我唯一的问题是如果 11 会爆牌,如何将 A 改为 1。

我曾尝试在玩家手牌被破坏时使用 scores.append(Ace = 1)。唯一的问题是之后的每个 A 现在都是 1。因此,如果庄家有 A,则 A 为 1。如果我在最后重新计算得分时尝试将其改回 11,则玩家得分现在有10 分(将 10 加到 A 值 1 上得到 11)。除了附加之外,我还尝试添加另一个字典,但我不知道如何实现另一个字典。我还尝试完全重写我的程序以减少类(class)。

我希望程序能够根据值将 ace 更改为 1 或 11。我不知道还能尝试什么。如果这有助于我理解如何去做,我可以添加更多代码。

最佳答案

一个简单的数字总和不可能包含一张 A 可能具有的两个可能值。相反,您需要添加一些额外的代码来处理 21 点的这一方面。

一种相对简单的方法是在将牌的正常值相加的同时计算 A 的数量。如果您已经爆牌,则可以为您看到的每个 A 以 10 为增量调整分数(10,因为这是 11 和 1 之间的差异)。

def get_score(self):
score = 0
aces = 0
for c in cards:
score += c.get_score() # aces should return a value of 11
if c.getrank() == "Ace": # count aces
aces += 1

while aces > 0 and score > 21: # try to avoid a bust by changing ace values from 11 to 1
score -= 10 # until the bust has ben avoided, or you're out of aces
aces -= 1

return score

关于python - 我如何将 21 点牌组中的 'Ace' 定义为 11 或 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55756146/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com