python实现斗地主发牌和排序

设计一副牌,并安排好牌序(大小王,花色按照黑桃,红桃,梅花,方片)

import numpy as np

#设一副牌
suits = ['唯一','黑桃', '红桃', '梅花', '方片']
ranks = [ '大王','小王','2','A', 'K','Q', 'J', '10', '9', '8','7', '6', '5','4', '3']
paizu = [(rank, suit) for suit in suits for rank in ranks]

del paizu[2:17]
del paizu[15:17]
del paizu[28:30]
del paizu[41:43]
print(paizu)#检验设计的牌组

洗牌和发牌

#洗牌
np.random.shuffle(paizu)
#再洗一次
np.random.shuffle(paizu)


#发牌
player1_cards = paizu[:17]
player2_cards = paizu[17:34]
player3_cards = paizu[34:51]
bottom_cards = paizu[51:]

排序和发牌

#手牌排序
player1_cards.sort(key=lambda x: (ranks.index(x[0]), suits.index(x[1]) ) )
player2_cards.sort(key=lambda x: (ranks.index(x[0]), suits.index(x[1]) ) )
player3_cards.sort(key=lambda x: (ranks.index(x[0]), suits.index(x[1]) ) )
bottom_cards.sort(key=lambda x: (ranks.index(x[0]), suits.index(x[1]) ) ) 

#显示每个人的牌
print("\n玩家一的手牌:")
for card in player1_cards:
    print(f"{card[1]} of {card[0]}")
    
print("\n玩家二的手牌:")
for card in player2_cards:
    print(f"{card[1]} of {card[0]}")
print("\n玩家3的手牌:")

for card in player3_cards:
    print(f"{card[1]} of {card[0]}")
print("\n底牌:")

for card in bottom_cards:
    print(f"{card[1]} of {card[0]}")

完整版:

import numpy as np

#设一副牌
suits = ['唯一','黑桃', '红桃', '梅花', '方片']
ranks = [ '大王','小王','2','A', 'K','Q', 'J', '10', '9', '8','7', '6', '5','4', '3']
paizu = [(rank, suit) for suit in suits for rank in ranks]

del paizu[2:17]
del paizu[15:17]
del paizu[28:30]
del paizu[41:43]
print(paizu)#检验设计的牌组

#洗牌
np.random.shuffle(paizu)
#再洗一次
np.random.shuffle(paizu)


#发牌
player1_cards = paizu[:17]
player2_cards = paizu[17:34]
player3_cards = paizu[34:51]
bottom_cards = paizu[51:]

#手牌排序
player1_cards.sort(key=lambda x: (ranks.index(x[0]), suits.index(x[1]) ) )
player2_cards.sort(key=lambda x: (ranks.index(x[0]), suits.index(x[1]) ) )
player3_cards.sort(key=lambda x: (ranks.index(x[0]), suits.index(x[1]) ) )
bottom_cards.sort(key=lambda x: (ranks.index(x[0]), suits.index(x[1]) ) ) 

#显示每个人的牌
print("\n玩家一的手牌:")
for card in player1_cards:
    print(f"{card[1]} of {card[0]}")
    
print("\n玩家二的手牌:")
for card in player2_cards:
    print(f"{card[1]} of {card[0]}")
print("\n玩家3的手牌:")

for card in player3_cards:
    print(f"{card[1]} of {card[0]}")
print("\n底牌:")

for card in bottom_cards:
    print(f"{card[1]} of {card[0]}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值