running result
code show as below:
import random
import copy
class Poke(object):
"""扑克类"""
pokes = list()
washed_pokes = list()
player1 = list()
player2 = list()
player3 = list()
last = list()
def __init__(self, flower, num):
self.flower = flower
self.num = num
def __str__(self):
"""打印对象时, 打印花色和点数"""
return "{}{}".format(self.flower, self.num)
@classmethod
def init_pokes(cls):
"""初始化牌堆类方法"""
flowers = ("♦", "♣", "♥", "♠")
nums = ("3", "4", "5", "6", "7", "8", "9", "10", "J", "K", "Q", "A", "2")
kings = {
"big": "大王", "small": "小王"}
for num_ in nums:
for flower_ in flowers:
cls.pokes.append(Poke(flower_, num_))
cls.pokes.append(Poke(kings.get("small"), ""))
cls.pokes.append(Poke(kings.get("big"), ""))
@classmethod
def wash(cls):
"""洗牌方法"""
cls.washed_pokes = copy.deepcopy(cls.pokes)
for idx in range(54):
idx_random = random.randint(0, 53)
cls.washed_pokes[idx], cls.washed_pokes[idx_random] = cls.washed_pokes[idx_random], cls.washed_pokes[idx]
@classmethod
def send_poke(cls):
"""发牌方法"""
washed_pokes = copy.deepcopy(cls.washed_pokes)
cls.player1.extend(washed_pokes[0:51:3])
cls.player2.extend(washed_pokes[1:51:3])
cls.player3.extend(washed_pokes[2:51:3])
cls.last.extend(washed_pokes[51:54:1])
@staticmethod
def show_poke(poke_list, action_name):
print("\n" + "-" * 100 + "\n{}:".format(action_name), end="")
for idx, poke_ in enumerate(poke_list):
print(poke_, end=" ")
if idx == 54 / 2:
print()
print("\n" + "-" * 100)
@classmethod
def show_player(cls):
"""展示 牌堆"""
cls.show_poke(cls.pokes, "初始化牌堆")
cls.show_poke(cls.washed_pokes, "洗牌")
cls.show_poke(cls.player1, "玩家一")
cls.show_poke(cls.player2, "玩家二")
cls.show_poke(cls.player3, "玩家三")
cls.show_poke(cls.last, "底牌")
@classmethod
def sort_poke(cls, player_poke_list):
"""根据初始化已排序的扑克牌 对玩家的牌进行排序"""
temp_pokes = list()
for poke in cls.pokes:
for player_poke in player_poke_list:
if poke.__str__() == player_poke.__str__():
temp_pokes.append(poke)
temp_pokes.reverse()
return temp_pokes
@classmethod
def sort_pokes_opt(cls):
cls.player1 = cls.sort_poke(cls.player1)
cls.player2 = cls.sort_poke(cls.player2)
cls.player3 = cls.sort_poke(cls.player3)
def main():
"""主函数"""
Poke.init_pokes()
Poke.wash()
Poke.send_poke()
Poke.sort_pokes_opt()
Poke.show_player()
if __name__ == '__main__':
main()