我制作了一副可以洗牌的牌。我构建了player模块,并让dealer类继承了牌组。(因为庄家是洗牌的人,而不是一副牌自己洗牌)我试着把这两张都导入一个main,让庄家洗牌。不,事情开始破裂了。你知道吗
过了一段时间,我开始尝试错误,添加random()和self
以及任何你能想到的东西。什么都没用。在这一点上,主文件几乎被删除了,因为我不只是理解youtube上的任何东西,真的。你知道吗
import random as rd
class Card:
card_rank = [str(n) for n in range(2, 10)]
card_rank.extend(['Ten', 'Jack', 'Queen', 'King', 'Ace'])
card_suit = ['Spades', 'Clubs', 'Diamonds', 'Hearts']
def __init__(self, rank, suit):
assert 2 <= rank <= 14 and 1 <= suit <= 4
self.rank = rank
self.suit = suit
def __str__(self):
return '{} of {}'.format(Card.card_rank[self.rank - 2], Card.card_suit[self.suit - 1])
class Deck:
def __init__(self):
self.cards = [Card(rank, suit) for rank in range(2, 14 + 1) for suit in range(1, 4 + 1)]
def is_empty(self):
return not self.cards
def pick(self):
rd.shuffle(self.cards)
return self.cards.pop()
import CardDeck class Player: def __init__(self): self.hand = [] class Human(Player): def __init__(self): super(Human, self).__init__() self.name = input() class Dealer(Player, CardDeck.Deck): def __init__(self): super(Dealer, self).__init__() def deck_shuffle(self): while not CardDeck.Deck.is_empty: print(CardDeck.Deck.pick)
> import CardDeck as cd
> import Players as pl
>
>
> dealer = pl.Dealer
>
>
> dealer.deck_shuffle
我要庄家洗牌。我想通过打印纸牌看看是否有效。我计划做更多的事,但现在,我很困。(很抱歉格式化了,这个网站把我弄糊涂了)
如果要保留继承,需要确保初始化所有的超类。你知道吗
在
Dealer
类中调用super(Dealer, self).__init__()
,它只初始化Player
超类。因此Deck
中的cards
字段永远不会被创建。你知道吗您需要在经销商的
__init__
中添加显式的Deck.__init__(self)
调用,或者将super().__init__()
添加到Player
。你知道吗有关更多信息,请参阅this other question。你知道吗
然后,在
deck_shuffle
中,只需调用self.pick()
。你知道吗编辑:
总之,代码应该是:
卡片组.py不变
玩家.py地址:
你这样称呼它:
deck是一个列表,因此您可以导入
random
,并在全局或经销商手中创建的deck实例上使用random.shuffle(deck)
。你知道吗这是一个black jack script从一个课程,我正在遵循它会帮助你很多。它也得到了一些解释。你知道吗
相关问题 更多 >
编程相关推荐