Questions tagged «object-oriented-analysis»

4
与标准卡组相比,为更复杂的扑克牌类型创建类的好方法吗?
我对面向对象的编程非常陌生,并且正尝试通过制作简单的纸牌游戏(似乎很传统!)来开始使用python学习。我已经完成了下面的示例,该示例运行良好,并且教会了我有关制作PlayingCard()该类的多个实例以创建该类的实例的信息Deck(): class PlayingCard(object): def __init__(self, suit, val): self.suit = suit self.value = val def print_card(self): print("{} of {}".format(self.value, self.suit)) class Deck(object): def __init__(self): self.playingcards = [] self.build() def build(self): for s in ["Spades", "Clubs", "Diamonds", "Hearts"]: for v in range(1,14): self.playingcards.append(PlayingCard(s,v)) deck = Deck() 我现在想用更复杂的卡做一些事情,而不仅仅是一个标准的52副牌(具有很好的递增值)。我想到的套牌是“大富翁”纸牌游戏: 卡共有3种基本类型-ACTION卡,PROPERTY卡和MONEY卡。操作卡执行不同的操作,属性卡属于不同的颜色集,而货币卡可以具有不同的值。此外,属性卡可以是“通配符”,并且可以用作两个集合之一的一部分。最后,每张卡还具有同等的货币价值(在每张卡的左上角指示)。在租赁行动卡中,该卡只能应用于卡上指示的颜色属性。 我的问题只是一般如何处理这种情况,在基于类的python程序中包括这些不同的卡的最佳方法是什么?我应该保持我的单一PlayingCard()班级,并且只有很多输入,例如PlayingCard(type="PROPERTY", value="3M")。还是会更好地创建单独的类,如ActionPlayingCard(),PropertyPlayingCard()等?或者,还有更好的方法?就像我说的那样,我正在这里开始学习,以及如何根据更高级别的设计来组织这类情况。 非常感谢。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.