Nesneye yönelik programlamaya son derece yeniyim ve basit bir kart oyunu (geleneksel gibi görünüyor!) Yaparak python'da öğrenmeye başlamaya çalışıyorum. İyi çalışan ve PlayingCard()
sınıfın bir örneğini oluşturmak için sınıfın birden çok örneğini yapma hakkında öğretir aşağıdaki örnek yaptım 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()
Şimdi daha karmaşık kartlarla bir şey yapmak istiyorum, sadece standart 52 deste değil (güzel değerlere sahip). Aklımdaki güverte Tekel kart oyunu:
3 temel kart türü vardır: EYLEM kartları, MÜLK kartları ve PARA kartları. Aksiyon kartları farklı eylemler gerçekleştirir, özellik kartları farklı renk setlerine aittir ve para kartları farklı değerlere sahip olabilir. Ek olarak, özellik kartları "joker karakterler" olabilir ve iki setten birinin parçası olarak kullanılabilir. Son olarak, her kartın eşdeğer bir para değeri vardır (her kartın üst köşesinde gösterilir). Kira işlem kartlarında, kart yalnızca kartta belirtilen renk özelliğine uygulanabilir.
Benim sorum genellikle böyle bir durumun nasıl ele alınacağı ve bu farklı kartları sınıf tabanlı bir python programına dahil etmenin iyi bir yolu ne olurdu? Tek dersimi tutmalı mıyım PlayingCard()
ve sadece birçok girdiye sahip olmalıyım PlayingCard(type="PROPERTY", value="3M")
. Yoksa gibi ayrı sınıflar oluşturmak için daha iyi olurdu ActionPlayingCard()
, PropertyPlayingCard()
vb? Yoksa daha iyi bir yol var mı? Söylediğim gibi, burada öğrenmemin başlangıcındayım ve bu tür durumları daha üst düzey tasarım açısından nasıl organize edeceğim.
Çok teşekkürler.