"""
启动后输入玩家数量和扑克牌副数,创建牌->洗牌->发牌->整理牌
"""
import random
puke = ['3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2']
pukeType = ['♠', '♥', '♣', '♦']
class Puke:
def __init__(self, player: int, count: int):
self.player = player
self.count = count
self.puke = []
self.player_pk = []
self.create_puke()
self.xi_pai()
self.fa_pai()
self.sorted_pk()
# 生成牌
def create_puke(self):
print('-------------------------------开始生成扑克----------------------------')
for i in range(0, self.count):
print('正在生成第%d副扑克' % (i + 1))
for j in range(0, len(pukeType)):
for k in range(0, len(puke)):
self.puke.append(str(j) + str(k))
print('生成扑克完成,共%d' % len(self.puke))
self.print_pk('生成的扑克:', self.puke)
# 洗牌
def xi_pai(self):
random.shuffle(self.puke)
self.print_pk('洗牌后的扑克:', self.puke)
# 发牌
def fa_pai(self):
# 创建玩家位置
for i in range(0, self.player):
self.player_pk.append([])
print('开始发牌')
for index, pk in enumerate(self.puke):
self.player_pk[index % self.player].append(pk)
for i in range(0, self.player):
self.print_pk("第%d手上的牌" % (i + 1), self.player_pk[i])
print("第%d手上的有%d张牌" % (i + 1, len(self.player_pk[i])))
print('--------------------------------发牌结束-------------------------------')
# 整理玩家手上的牌
def sorted_pk(self):
print('--------------------------------开始整理玩家手上的牌-------------------------------')
for i in range(0, self.player):
self.print_pk("整理前第%d手上的牌" % (i + 1), self.player_pk[i])
self.player_pk[i].sort(key=lambda elem: int(elem[1:]))
self.print_pk("整理后第%d手上的牌" % (i + 1), self.player_pk[i])
print('--------------------------------整理牌完成-------------------------------')
# 打印类
def print_pk(self, hint: str, lists: list):
print('-------------------------------------------------------------')
print(hint)
for index, value in enumerate(lists):
# 使用类似java的三目运算 true的结果 if 条件 else false结果
print(str(pukeType[int(value[0: 1])]) + str(puke[int(value[1:])]),
end=('' if index != len(lists) - 1 else '\r\n'))
测试调用代码
from Puke import Puke
if __name__ == '__main__':
print('---------------------Welcome!!---------------------')
try:
player = int(input('请输入玩家数:'))
count = int(input('请输入使用几副扑克:'))
except ValueError:
print('---------------------自动退出,请输入正确的数字!!!----------------------')
exit()
# print('player:' + player + "" + count)
print('欢迎%d位玩家,共%d副扑克。' % (player, count))
puke = Puke(player, count)
输出结果:
---------------------Welcome!!---------------------
请输入玩家数:4
请输入使用几副扑克:1
欢迎4位玩家,共1副扑克。
-------------------------------开始生成扑克----------------------------
正在生成第1副扑克
生成扑克完成,共52
-------------------------------------------------------------
生成的扑克:
♠3♠4♠5♠6♠7♠8♠9♠10♠J♠Q♠K♠A♠2♥3♥4♥5♥6♥7♥8♥9♥10♥J♥Q♥K♥A♥2♣3♣4♣5♣6♣7♣8♣9♣10♣J♣Q♣K♣A♣2♦3♦4♦5♦6♦7♦8♦9♦10♦J♦Q♦K♦A♦2
-------------------------------------------------------------
洗牌后的扑克:
♦10♣J♥9♣4♠5♣5♥Q♠A♥A♣10♠7♠4♦A♠8♠Q♣Q♥8♦7♣3♣9♠2♦K♥2♦2♦6♠3♠K♠10♣8♠9♥10♣K♥4♦3♠6♥5♥K♦4♦9♣A♦J♣6♥6♣2♥J♣7♥3♦8♠J♦Q♦5♥7
开始发牌
-------------------------------------------------------------
第1手上的牌
♦10♠5♥A♦A♥8♠2♦6♣8♥4♥K♦J♥J♠J
第1手上的有13张牌
-------------------------------------------------------------
第2手上的牌
♣J♣5♣10♠8♦7♦K♠3♠9♦3♦4♣6♣7♦Q
第2手上的有13张牌
-------------------------------------------------------------
第3手上的牌
♥9♥Q♠7♠Q♣3♥2♠K♥10♠6♦9♥6♥3♦5
第3手上的有13张牌
-------------------------------------------------------------
第4手上的牌
♣4♠A♠4♣Q♣9♦2♠10♣K♥5♣A♣2♦8♥7
第4手上的有13张牌
--------------------------------发牌结束-------------------------------
--------------------------------开始整理玩家手上的牌-------------------------------
-------------------------------------------------------------
整理前第1手上的牌
♦10♠5♥A♦A♥8♠2♦6♣8♥4♥K♦J♥J♠J
-------------------------------------------------------------
整理后第1手上的牌
♥4♠5♦6♥8♣8♦10♦J♥J♠J♥K♥A♦A♠2
-------------------------------------------------------------
整理前第2手上的牌
♣J♣5♣10♠8♦7♦K♠3♠9♦3♦4♣6♣7♦Q
-------------------------------------------------------------
整理后第2手上的牌
♠3♦3♦4♣5♣6♦7♣7♠8♠9♣10♣J♦Q♦K
-------------------------------------------------------------
整理前第3手上的牌
♥9♥Q♠7♠Q♣3♥2♠K♥10♠6♦9♥6♥3♦5
-------------------------------------------------------------
整理后第3手上的牌
♣3♥3♦5♠6♥6♠7♥9♦9♥10♥Q♠Q♠K♥2
-------------------------------------------------------------
整理前第4手上的牌
♣4♠A♠4♣Q♣9♦2♠10♣K♥5♣A♣2♦8♥7
-------------------------------------------------------------
整理后第4手上的牌
♣4♠4♥5♥7♦8♣9♠10♣Q♣K♠A♣A♦2♣2
--------------------------------整理牌完成-------------------------------
Process finished with exit code 0