私はオブジェクト指向プログラミングに非常に慣れていないので、単純なカードゲームを作ることで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デッキだけではなく、より複雑なカードを使って何かを作りたいと思っています(値が適切に増加している)。私が念頭に置いているデッキはモノポリーカードゲームです。
カードには、ACTIONカード、PROPERTYカード、MONEYカードの3つの基本的なタイプがあります。アクションカードはさまざまなアクションを実行し、プロパティカードはさまざまなカラーセットに属し、マネーカードはさまざまな値を持つことができます。さらに、プロパティカードは「ワイルドカード」にすることができ、2つのセットのいずれかの一部として使用できます。最後に、すべてのカードには同等の金額値があります(各カードの上隅に示されています)。レントアクションカードでは、カードはカードに示されているカラープロパティにのみ適用できます。
私の質問は、一般的にこのような状況をどのように処理するかであり、クラスベースのpythonプログラムにこれらの異なるカードを含めるための良い方法は何でしょうか?私は単一のPlayingCard()
クラスを保持し、のような多くの入力を保持する必要がありPlayingCard(type="PROPERTY", value="3M")
ます。それともなど、別々のクラスを作成する方が良いだろうActionPlayingCard()
、PropertyPlayingCard()
などを?それとももっと良い方法がありますか?私が言うように、私はここで私の学習の初めであり、より高いレベルの設計の観点からこれらのタイプの状況を整理する方法。
どうもありがとう。