Je suis extrêmement nouveau dans la programmation orientée objet et j'essaie de commencer à apprendre en python en faisant un simple jeu de cartes (comme cela semble être traditionnel!). J'ai fait l'exemple suivant qui fonctionne bien et m'apprend à créer plusieurs instances de la PlayingCard()
classe pour créer une instance de la 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()
Je veux faire quelque chose maintenant avec des cartes plus complexes, pas seulement un jeu de 52 cartes standard (qui a des valeurs bien incrémentées). Le jeu auquel je pense est le jeu de cartes Monopoly:
Il existe 3 types fondamentaux de cartes: les cartes ACTION, les CARTES DE PROPRIÉTÉ et les cartes ARGENT. Les cartes d'action effectuent différentes actions, les cartes de propriété appartiennent à différents jeux de couleurs et les cartes d'argent peuvent avoir des valeurs différentes. De plus, les cartes de propriété peuvent être des "caractères génériques" et peuvent être utilisées dans le cadre de l'un des deux ensembles. Enfin, chaque carte a également une valeur monétaire équivalente (indiquée dans le coin supérieur de chaque carte). Dans les cartes d'action de location, la carte ne peut s'appliquer qu'à la propriété de couleur indiquée sur la carte.
Ma question est simplement de savoir comment gérer une situation comme celle-ci, et quelle serait une bonne façon d'inclure ces différentes cartes dans un programme python basé sur une classe? Dois-je garder ma PlayingCard()
classe unique et avoir juste de nombreuses entrées, telles que PlayingCard(type="PROPERTY", value="3M")
. Ou serait - il préférable de créer des classes séparées telles que ActionPlayingCard()
, PropertyPlayingCard()
, etc? Ou existe-t-il une meilleure façon? Comme je l'ai dit, je suis au début de mon apprentissage ici, et comment organiser ces types de situations en termes de conception de niveau supérieur.
Merci beaucoup.