斗地主发牌程序:
模拟一个斗地主发牌程序,实现对三个玩家进行手牌的派发,实现功能:

需要展示 玩家 的所有手牌,要求按照从小到大的顺序排序,相同点数的情况下,按照 黑桃 > 红桃 > 方片 > 梅花 的大小关系排列

import random


class Card:
    def __init__(self, point, color, big):
        self.color = color
        self.point = point
        self.big = big

    def __str__(self):
        return f"({self.point},{self.color})"

    def __repr__(self):
        return f"Card({self.point},{self.color})"


class Player:
    def __init__(self, name, listCard):
        self.name = name
        self.listCard = listCard

    def __str__(self):
        return f"({self.name},{self.listCard})"

    def __repr__(self):
        return f"Player({self.name},{self.listCard})"


def custom_sort(card1):
    return card1.point


listNum = ["3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"]
listColor = ["♣", "♦", "♥", "♠"]
listCard = []
i = 1
for num in listNum:
    for color in listColor:
        listCard.append(Card(num, color, i))
        i += 1
listCard.append(Card("🃏", "红", 200))
listCard.append(Card("🃏", "黑", 100))



print("*" * 10 + " 欢迎进入 XX 斗地主 " + "*" * 10)
aName = input("请输入A玩家姓名:")
aListCard = []
bName = input("请输入B玩家姓名:")
bListCard = []
cName = input("请输入B玩家姓名:")
cListCard = []
print("洗牌中...")
print("洗牌完成!")

print("发牌中...")



while len(listCard) != 3:
    if (len(listCard) - 3) % 3 == 0:
        index = random.randint(0, len(listCard) - 1)
        aListCard.append(listCard.pop(index))
    elif (len(listCard) - 3) % 3 == 1:
        index = random.randint(0, len(listCard) - 1)
        bListCard.append(listCard.pop(index))
    elif (len(listCard) - 3) % 3 == 2:
        index = random.randint(0, len(listCard) - 1)
        cListCard.append(listCard.pop(index))

print("发牌完成!")
landName = input("谁叫地主?")
if landName == aName:
    aListCard.extend(listCard)
elif landName == bName:
    bListCard.extend(listCard)
else:
    cListCard.extend(listCard)

listCard.sort(key=lambda card: card.big)
aListCard.sort(key=lambda card: card.big)
bListCard.sort(key=lambda card: card.big)
cListCard.sort(key=lambda card: card.big)
aPlayer = Player(aName, aListCard)
bPlayer = Player(bName, bListCard)
cPlayer = Player(cName, cListCard)
print(listCard)
print(aPlayer)
print(bPlayer)
print(cPlayer)
********** 欢迎进入 XX 斗地主 **********
请输入A玩家姓名:zhangsan
请输入B玩家姓名:lisi
请输入B玩家姓名:wangwu
洗牌中...
洗牌完成!
发牌中...
发牌完成!
谁叫地主?zhangsan
[Card(7,♦), Card(9,♦), Card(2,♣)]
(zhangsan,[Card(3,♥), Card(3,♠), Card(4,♣), Card(4,♠), Card(5,♣), Card(5,♦), Card(5,♥), Card(7,♦), Card(8,♥), Card(9,♦), Card(10,♣), Card(10,♥), Card(J,♦), Card(J,♥), Card(Q,♣), Card(K,♣), Card(K,♦), Card(K,♠), Card(A,♦), Card(2,♣)])
(lisi,[Card(3,♣), Card(4,♦), Card(4,♥), Card(5,♠), Card(6,♦), Card(6,♥), Card(7,♣), Card(7,♥), Card(9,♣), Card(9,♥), Card(10,♠), Card(J,♠), Card(Q,♦), Card(Q,♥), Card(Q,♠), Card(2,♠), Card(🃏,黑)])
(wangwu,[Card(3,♦), Card(6,♣), Card(6,♠), Card(7,♠), Card(8,♣), Card(8,♦), Card(8,♠), Card(9,♠), Card(10,♦), Card(J,♣), Card(K,♥), Card(A,♣), Card(A,♥), Card(A,♠), Card(2,♦), Card(2,♥), Card(🃏,红)])

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐