【问题标题】:How to program blackjack scoring for an ace如何为 ace 编写二十一点计分程序
【发布时间】:2019-10-15 14:33:22
【问题描述】:

我正在尝试创建一个二十一点模拟,以便我可以测试各种策略并无限期地模拟它们。我遇到的最大问题是如何获得一张王牌。理想情况下,如果你拿到一张 A,它会查看你的分数,并相应地给你 1 或 11,但是如果你拿到一张 5(5)、A(11)然后是 6(6),我无法避免在你应该有 12 岁的时候给你一个半身像。

class Person:
    wins = 0

    def __init__(self, call):
        self.call = call
        self.hand = []

    def deal(self, cards_dealt):
        cards_in_deck = len(deck)
        for card in range(0, cards_dealt):
            card_position = (random.randint(0, cards_in_deck) - 1)
            self.hand.append(deck[card_position])
            deck.pop(card_position)
            cards_in_deck -= 1

    def total(self):
        my_total = 0
        for x in range(0, len(self.hand)):
            if self.hand[x][0] > 10:
                my_total += 10
            if self.hand[x][0] == 1:
                if self.total < 11:
                    my_total += 11
                else:
                    my_total += 1
            else:
                my_total += self.hand[x][0]
        return my_total


numbers_in_each_suit = 13
suits = ['Spades', 'Hearts', 'Diamonds', 'Clubs']
deck = []

for number in range(0, numbers_in_each_suit):
    for suit in suits:
        deck.append([(number + 1), suit])

cpu = Person(10)
cpu.deal(2)
cpu.total()

【问题讨论】:

  • 你的行 if self.hand[x][0] == 1: 强制这种情况。

标签: python


【解决方案1】:

只需将 1 用作创建 ace 的数字,每个 ace 加 11 并计算每个 ace,然后如果你失败则减去 10,直到你没有或直到你用完 ace 递减。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 2012-03-15
    • 2016-08-05
    • 2012-01-03
    • 2017-12-01
    • 2013-10-08
    • 2016-12-29
    相关资源
    最近更新 更多