मैं ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के लिए बेहद नया हूं, और एक साधारण कार्ड गेम (जैसा कि पारंपरिक लगता है!) बनाकर अजगर में सीखना शुरू करने की कोशिश कर रहा हूं। मैंने निम्नलिखित उदाहरण किया है जो ठीक काम करता है, और मुझे 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 डेक (जिसमें अच्छी तरह से वृद्धि मूल्य हैं)। मेरे मन में जो डेक है वह एकाधिकार कार्ड गेम है:
3 मौलिक प्रकार के कार्ड हैं - कार्रवाई कार्ड, संपत्ति कार्ड और पैसा कार्ड। एक्शन कार्ड अलग-अलग क्रिया करते हैं, प्रॉपर्टी कार्ड अलग-अलग रंग सेट के होते हैं, और मनी कार्ड में अलग-अलग मूल्य हो सकते हैं। इसके अतिरिक्त, संपत्ति कार्ड "वाइल्डकार्ड" हो सकते हैं, और दो सेटों में से एक के हिस्से के रूप में उपयोग किया जा सकता है। अंत में, प्रत्येक कार्ड में एक समतुल्य धन मूल्य (प्रत्येक कार्ड के शीर्ष कोने में इंगित) होता है। किराए के एक्शन कार्डों में, कार्ड केवल कार्ड पर इंगित रंग संपत्ति पर लागू हो सकता है।
मेरा सवाल यह है कि आम तौर पर इस तरह की स्थिति को कैसे संभालना है, और कक्षा-आधारित अजगर कार्यक्रम में इन विभिन्न कार्डों को शामिल करने का एक अच्छा तरीका क्या होगा? मैं अपने ही रखना चाहिए PlayingCard()
वर्ग, और बस जैसे कई आदानों, है PlayingCard(type="PROPERTY", value="3M")
। या यह इस तरह के रूप अलग कक्षाएं बनाने के लिए बेहतर होगा ActionPlayingCard()
, PropertyPlayingCard()
, आदि? या कोई बेहतर तरीका है? जैसा कि मैं कहता हूं, मैं यहां अपने सीखने की शुरुआत में हूं, और उच्च स्तर के डिजाइन के संदर्भ में इस प्रकार की स्थितियों को कैसे व्यवस्थित किया जाए।
बहुत धन्यवाद।