【发布时间】: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