实现麻将牌发牌操作
import randomclass Card:# 創建5個列表,總牌堆和四名玩家各一個牌堆cards = []player1 = []player2 = []player3 = []player4 = []def __init__(self, name):self.name = namedef __str__(self):return self.name# 使用類方法創建一副麻將牌(初始化牌堆)
def init_cards(cls):# 創建萬字牌元祖wan = ("一萬", "二萬", "三萬", "四萬", "五萬", "六萬", "七萬", "八萬", "九萬","一萬", "二萬", "三萬", "四萬", "五萬", "六萬", "七萬", "八萬", "九萬","一萬", "二萬", "三萬", "四萬", "五萬", "六萬", "七萬", "八萬", "九萬","一萬", "二萬", "三萬", "四萬", "五萬", "六萬", "七萬", "八萬", "九萬")# 創建筒字牌元祖tong = ("幺雞", "二筒", "三筒", "四筒", "五筒", "六筒", "七筒", "八筒", "九筒","幺雞", "二筒", "三筒", "四筒", "五筒", "六筒", "七筒", "八筒", "九筒","幺雞", "二筒", "三筒", "四筒", "五筒", "六筒", "七筒", "八筒", "九筒","幺雞", "二筒", "三筒", "四筒", "五筒", "六筒", "七筒", "八筒", "九筒","幺雞", "二筒", "三筒", "四筒", "五筒", "六筒", "七筒", "八筒", "九筒")# 創建條字牌元祖tiao = ("一條", "二條", "三條", "四條", "五條", "六條", "七條", "八條", "九條","一條", "二條", "三條", "四條", "五條", "六條", "七條", "八條", "九條","一條", "二條", "三條", "四條", "五條", "六條", "七條", "八條", "九條","一條", "二條", "三條", "四條", "五條", "六條", "七條", "八條", "九條")# 創建風牌元祖wind = ("東風", "西風", "南風", "北風", "東風", "西風", "南風", "北風","東風", "西風", "南風", "北風", "東風", "西風", "南風", "北風","東風", "西風", "南風", "北風", "東風", "西風", "南風", "北風","東風", "西風", "南風", "北風", "東風", "西風", "南風", "北風")word = ("紅中", "發財", "白板", "紅中", "發財", "白板","紅中", "發財", "白板", "紅中", "發財", "白板","紅中", "發財", "白板", "紅中", "發財", "白板","紅中", "發財", "白板", "紅中", "發財", "白板")# 分別遍歷5種花色牌,為所有136張牌創建單張牌對象,并添加到總牌堆列表中for wa in wan:a = Card(wa)cls.cards.append(a)for to in tong:b = Card(to)cls.cards.append(b)for ti in tiao:c = Card(ti)cls.cards.append(c)for wi in wind:d = Card(wi)cls.cards.append(d)for wo in word:e = Card(wo)cls.cards.append(e)# 展示總牌堆
def show_cards(cls):for card in cls.cards:print(card, end=" ")print()# 洗牌
def wash_cards(cls):idxx = random.randint(1, 136)for idx in range(136):cls.cards[idx], cls.cards[idxx] = cls.cards[idxx], cls.cards[idx]def send_cards(cls):# 發牌模式為每人輪流一次性拿4張牌,循環3次,最后每人輪流拿1張牌,每人拿到13張牌x = random.randint(2, 12) # 生成隨機數,完成擲色子的動作,從而決定拿牌位置for _ in range(3):# 每個玩家一次性拿4張牌for _ in range(4):cls.player1.append(cls.cards.pop(2 * x))for _ in range(4):cls.player2.append(cls.cards.pop(2 * x))for _ in range(4):cls.player3.append(cls.cards.pop(2 * x))for _ in range(4):cls.player4.append(cls.cards.pop(2 * x))# 每個玩家各拿1張牌cls.player1.append(cls.cards.pop(2 * x))cls.player2.append(cls.cards.pop(2 * x))cls.player3.append(cls.cards.pop(2 * x))cls.player4.append(cls.cards.pop(2 * x))def show_player(cls):print("玩家一:", end="")for card in cls.player1:print(card, end=" ")print()print("玩家二:", end="")for card in cls.player2:print(card, end=" ")print()print("玩家三:", end="")for card in cls.player3:print(card, end=" ")print()print("玩家四:", end="")for card in cls.player4:print(card, end=" ")print()
Card.init_cards()
Card.show_cards()
Card.wash_cards()
Card.show_cards()
Card.send_cards()
Card.show_player()復制代碼
總結
- 上一篇: 国家海洋局第二海洋研究所(海洋二所)考研
- 下一篇: booth乘法器原理