Eu sou extremamente novo na programação orientada a objetos e estou tentando começar a aprender em python, criando um jogo de cartas simples (como parece ser tradicional!). Fiz o exemplo a seguir, que funciona bem, e me ensina a criar várias instâncias da PlayingCard()
classe para criar uma instância da Deck()
classe:
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()
Eu quero fazer algo agora com cartas mais complexas, não apenas com um baralho 52 padrão (que tem valores bem incrementados). O baralho que tenho em mente é o jogo de cartas Monopoly:
Existem três tipos fundamentais de cartões - cartões de AÇÃO, CARTÕES DE PROPRIEDADE e cartões de DINHEIRO. Os cartões de ação realizam ações diferentes, os cartões de propriedades pertencem a diferentes conjuntos de cores e os cartões de dinheiro podem ter valores diferentes. Além disso, os cartões de propriedades podem ser "curingas" e podem ser usados como parte de um dos dois conjuntos. Finalmente, cada cartão também possui um valor monetário equivalente (indicado no canto superior de cada cartão). Nos cartões de ação de aluguel, o cartão só pode ser aplicado à propriedade de cor indicada no cartão.
Minha pergunta é geralmente como lidar com uma situação como essa, e qual seria uma boa maneira de incluir essas placas diferentes em um programa python baseado em classe? Devo manter minha PlayingCard()
classe única e apenas ter muitas informações, como PlayingCard(type="PROPERTY", value="3M")
. Ou seria melhor para criar classes separadas, como ActionPlayingCard()
, PropertyPlayingCard()
, etc? Ou há uma maneira melhor? Como eu disse, estou no começo do meu aprendizado aqui e como organizar esses tipos de situações em termos de design de nível superior.
Muito Obrigado.