0

我正在用 Python 制作一个基本的纸牌游戏(二十一点),其中庄家和玩家各有一个hand。有一个hand类,我想实例化两次并分别命名对象dHandpHand。因为这些“手”名称将在每一轮之后重复使用(或删除和重新分配),所以我在全球范围内声明它们:

dHand = Hand()
pHand = Hand()

当新一轮开始时,这些手牌中的卡片如下:

def deal():
    global dHand, pHand

    dHand = Hand() #assigning a new object to forget about old cards
    pHand = Hand()

    dHand.add_card(deck.deal_card())
    dHand.add_card(deck.deal_card())
    pHand.add_card(deck.deal_card())
    pHand.add_card(deck.deal_card())

有两个问题:

  1. 双手似乎总是有相同的牌并且有4张牌(不是两张)。pHand由于某种原因,两者似乎dHand都指向同一个对象。
  2. 如果我deal()再次调用,旧牌不会丢失 -add_card()只是添加到旧对象,而不是新对象。

任何指针(请原谅双关语)将不胜感激。

编辑:手类定义如下:

class Hand:
    def __init__(self, cards = []):
        # create Hand object
        self.cards = cards
        self.value = 0       

    def __str__(self):
        # return a string representation of a hand
        s = "Hand contains: "
        for card in self.cards:
            s += str(card) + " "
        return s

    def add_card(self, card):
        # add a card object to a hand
        self.cards.append(card)
4

0 回答 0