나는 객체 지향 프로그래밍을 처음 접했고 간단한 카드 게임을 만들어 파이썬에서 배우려고합니다 (전통적인 것처럼 보입니다!). 나는 잘 작동하는 다음 예제를 수행했으며 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 데크가 아닌 더 복잡한 카드로 무언가를 만들고 싶습니다. 내가 생각하는 갑판은 독점 카드 게임입니다.
액션 카드, 속성 카드 및 돈 카드의 세 가지 기본 유형의 카드가 있습니다. 액션 카드는 다른 액션을 수행하고 속성 카드는 다른 색상 세트에 속하며 머니 카드는 다른 값을 가질 수 있습니다. 또한 속성 카드는 "와일드 카드"일 수 있으며 두 세트 중 하나의 일부로 사용할 수 있습니다. 마지막으로, 모든 카드에는 동등한 금액이 있습니다 (각 카드의 상단 모서리에 표시됨). 임대 조치 카드에서 카드는 카드에 표시된 색상 특성에만 적용 할 수 있습니다.
내 질문은 일반적으로 이와 같은 상황을 처리하는 방법이며 클래스 기반 파이썬 프로그램에 이러한 다른 카드를 포함시키는 좋은 방법은 무엇입니까? 단일 PlayingCard()
클래스를 유지 하고와 같은 많은 입력을해야 PlayingCard(type="PROPERTY", value="3M")
합니다. 아니면 같은 별도의 클래스를 만드는 더 나은 것 ActionPlayingCard()
, PropertyPlayingCard()
등? 아니면 더 좋은 방법이 있습니까? 내가 말했듯이, 나는 여기에서 학습을 시작할 때, 그리고 더 높은 수준의 디자인 측면에서 이러한 유형의 상황을 구성하는 방법에 있습니다.
많은 감사합니다.