猿问

玩家和庄家各抽 2 张牌,庄家和玩家都拥有相同的 4 张牌

我有一个 Hand() 类,其属性 .user_hand 是他们的卡片列表,并为经销商和玩家创建了 2 个实例。.draw() 方法应该将最上面的卡片移动到其各自玩家的 .user_hand 中,但它似乎将它移动到了两个玩家。


class Card:


def __init__(self, suit, rank):

    self.suit = suit

    self.rank = rank


def __str__(self):

    return self.rank + ' of ' + self.suit


def __int__(self):

    global list_of_ranks

    return list_of_ranks[self.rank]



class Deck:


def __init__(self, deck_cards=[]):

    self.deck_cards = deck_cards

    for suit in list_of_suits:

        for rank in list_of_ranks:

            self.deck_cards.append(Card(suit,rank))


def shuffle(self):

    random.shuffle(self.deck_cards)



class Hand:


def __init__(self, user_hand=[], turn=True, blackjack=False, win=False):

    self.blackjack = blackjack

    self.user_hand = user_hand

    self.blackjack = blackjack

    self.win = win


def draw(self):

    self.user_hand.append(new_deck.deck_cards[0])

    new_deck.deck_cards.remove(new_deck.deck_cards[0])


def show_hand(self):

    print('\n\nDealer\'s hand:')

    for x in dealer_hand.user_hand:

        print(x)

    print('\nYour hand:')

    for x in new_hand.user_hand:

        print(x)

    print('Total value: {}'.format(calc(self.user_hand)))

...


new_hand.draw()

dealer_hand.draw()

new_hand.draw()

dealer_hand.draw()


new_hand.show_hand()

我的结果:


Dealer's hand:

Queen of Spades

Six of Diamonds

Nine of Clubs

Six of Spades


Your hand:

Queen of Spades

Six of Diamonds

Nine of Clubs

Six of Spades

Total value: 31


芜湖不芜
浏览 136回答 1
1回答

交互式爱情

这是一个有趣的案例,在许多文章中已经提到过,例如。在这里。您使用默认数组的 init 是问题所在。任何时候你draw()从不同的对象调用方法,你实际上填充了同一个数组。class Hand:def __init__(self, user_hand=[], turn=True, blackjack=False, win=False):...你可以这样解决它:class Hand:def __init__(self, user_hand=None, turn=True, blackjack=False, win=False):    if user_hand is None:        self.user_hand = []    else:         self.user_hand = user_hand...
随时随地看视频慕课网APP

相关分类

Python
我要回答