# coding:utf-8
'''
生成52張牌
'''
class Card:
def __init__(self, rank, suit):
self.rank = rank # 牌面數字
self.suit = suit # 牌面花色
class AceCard(Card):
pass
class NumberCard(Card):
pass
class FaceCard(Card):
pass
class Suit:
"""
將花色生成常量清單進行緩存
"""
def __init__(self, name, symlink):
self.name = name
self.symlink = symlink
# 花色常量,後續不需要在每次調用類生成
Club, Diamond, Heart, Spade = Suit('Club','1'), Suit('Diamond', '2'), Suit('Heart','3'), Suit('Spade', '4')
# 工廠函數
def build_card_factory(rank, suit):
if rank == 1: return AceCard('A',suit)
elif 1 < rank < 11: return NumberCard(str(rank),suit)
elif 11 <= rank < 14:
name = {'11':'J','12':'Q','13':'K'}[str(rank)]
return FaceCard(name,suit)
if __name__ == "__main__":
cards = [ build_card_factory(rank,suit) for rank in range(1,14) for suit in (Club,Diamond,Heart,Spade)]
cards_detail = [ (card.rank,card.suit.name) for card in cards]
print(cards_detail)
生成52張牌 -- 工廠函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.