ฉันใหม่มากสำหรับการเขียนโปรแกรมเชิงวัตถุและพยายามเริ่มเรียนรู้ด้วย python โดยการสร้างเกมไพ่อย่างง่าย (ตามที่ดูเหมือนจะเป็นแบบดั้งเดิม!) ฉันได้ทำตัวอย่างต่อไปนี้ซึ่งใช้งานได้ดีและสอนฉันเกี่ยวกับการสร้างอินสแตนซ์ของ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 สำรับ (ซึ่งมีค่าที่เพิ่มขึ้นอย่างมาก) เด็คที่ฉันมีอยู่ในใจคือเกมไพ่ Monopoly:
การ์ดพื้นฐานมี 3 ประเภท - การ์ด ACTION, PROPERTY cards และ MONEY cards บัตรการดำเนินการกระทำที่แตกต่างกันบัตรทรัพย์สินที่อยู่ในชุดสีที่แตกต่างกันและบัตรเงินสามารถมีค่าที่แตกต่างกัน นอกจากนี้การ์ดคุณสมบัติสามารถเป็น "wildcards" และสามารถใช้เป็นส่วนหนึ่งของหนึ่งในสองชุด ในที่สุดบัตรทุกใบก็มีมูลค่าเงินเท่ากัน (ระบุไว้ที่มุมด้านบนของบัตรแต่ละใบ) ในบัตรการเช่าดำเนินการบัตรสามารถนำไปใช้กับคุณสมบัติสีที่ระบุไว้บนบัตร
คำถามของฉันเป็นเพียงวิธีการจัดการกับสถานการณ์เช่นนี้และจะเป็นวิธีที่ดีในการรวมการ์ดที่แตกต่างกันเหล่านี้ในโปรแกรมหลามแบบคลาส? ฉันควรจะเก็บไว้คนเดียวของฉันชั้นและมีเพียงปัจจัยการผลิตเป็นจำนวนมากเช่นPlayingCard()
PlayingCard(type="PROPERTY", value="3M")
หรือมันจะดีกว่าการสร้างคลาสที่แยกต่างหากเช่นActionPlayingCard()
, PropertyPlayingCard()
etc? หรือมีวิธีที่ดีกว่า อย่างที่ฉันบอกว่าฉันเป็นจุดเริ่มต้นของการเรียนรู้ของฉันที่นี่และวิธีการจัดระเบียบสถานการณ์ประเภทนี้ในแง่ของการออกแบบระดับที่สูงขึ้น
ขอบคุณมาก.