Python:扑克游戏的基础:随机发牌

# 扑克游戏

from random import randrange

'''

suite	英[swiːt]
美[swiːt]
n.	(尤指旅馆的) 一套房间,套房; 一套家具; 组曲(由三个或更多相关部分组成);
[例句]They had a fabulous time during their week in a suite at the Paris Hilton.
他们在巴黎希尔顿酒店的套房里度过了非常愉快的一周。
[其他]	复数:suites

'''


class Card(object):

    # 一张牌
    def __init__(self, suite, face):
        self._suite = suite
        self._face = face

    @property
    def suite(self):
        return self.suite

    @property
    def face(self):
        return self._face

    def __str__(self):
        all_suites = ('♤', '♡', '♣', '♦')
        if self._face == 1:
            face_str = 'A'
        elif self._face == 11:
            face_str = 'J'
        elif self._face == 12:
            face_str = 'Q'
        elif self._face == 13:
            face_str = 'K'
        else:
            face_str = str(self._face)

        return '%s%s' % (all_suites[self._suite], face_str)


class Poker(object):
    """一副牌"""

    def __init__(self):
        self._cards = []
        self._current = 0
        for suite in range(4):
            for face in range(1, 14):
                card = Card(suite, face)
                self._cards.append(card)

    @property
    def card(self):
        return self._cards

    def shuffle(self):
        """洗牌,随机乱序"""
        self._current = 0
        cards_len = len(self._cards)
        for index in range(cards_len):
            pos = randrange(cards_len)
            self._cards[index], self._cards[pos] = self._cards[pos], self._cards[index]

    @property
    def next(self):
        """发牌"""
        card = self._cards[self._current]
        self._current += 1
        return card

    @property
    def has_next(self):
        """还有没有牌"""
        return self._current < len(self._cards)


class Player(object):
    def __init__(self, name):
        self._name = name
        self._cards_on_hand = []

    @property
    def name(self):
        return self._name

    @property
    def cards_on_hand(self):
        return self._cards_on_hand

    def get(self, card):
        """摸牌"""
        self._cards_on_hand.append(card)

    def arrange(self, card_key):
        """玩家整理手上的牌"""
        self._cards_on_hand.sort(key=card_key)


# 排序规则 根据花色再根据点数排

def get_key(card):
    return card.suite, card.face

def main():
    p = Poker()
    p.shuffle()
    players = [Player('东邪'),Player('西毒'),Player('南帝'),Player('北丐')]
    for _ in range(13):
        for player in players:
            player.get(p.next)
    for player in players:
        print(player.name+':', end=' ')

        for card in player.cards_on_hand:
            print(card, end=' ')

        print()

if __name__ == '__main__':
    main()
发布了52 篇原创文章 · 获赞 34 · 访问量 2606

猜你喜欢

转载自blog.csdn.net/weixin_38114487/article/details/104086336