python笔记3:使用python实现一个简单的棋牌程序(发牌)

需求:
1. 允许用户一次性输入多个玩家姓名,不限个数,然后为每个玩家随机生成3张牌。
2. 只有一把扑克牌,确保发出去的每张牌都不重样。
3. 牌需要有黑桃、红桃、方片、梅花之分。
代码如下:
# 棋牌游戏
import random


# 获取所有的牌
def get_all_cards():
    # 所有花色
    types = ['黑桃', '红桃', '方片', '梅花']
    # 所有数字
    numbers = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
    # 特殊牌(大小王)
    jokers = ['大王', '小王']
    # 所有的牌
    total_cards = jokers
    # 把花色和数字拼接起来
    for card_type in types:
        for number in numbers:
            card = card_type + number
            total_cards.append(card)
    return total_cards


# 发牌
def deal_cards(player_list, total_cards):
    result = {}  # 最终发牌结果
    selected_cards = []  # 已发出的牌
    for player in player_list:
        # 先移除已发出的牌
        for card in selected_cards:
            total_cards.remove(card)
        # 随机从牌堆中选3张
        cards = random.sample(total_cards, 3)
        # 存储已发出的牌
        selected_cards = cards
        # 把玩家和对应的3张牌添加到结果字典中
        result[player] = cards
    return result


# 开始游戏
def start():
    # 所有的牌
    total_cards = get_all_cards()
    # 输入玩家姓名
    players = input('请输入多个玩家姓名(以英文逗号分隔):')
    player_list = players.split(',')
    # 发牌,有几个人发几次牌
    result = deal_cards(player_list, total_cards)
    print(result)


start()
运行结果:
请输入多个玩家姓名(以英文逗号分隔):Jack,Rose,Tom,Jerry
{'Jack': ['梅花10', '黑桃7', '方片4'], 'Rose': ['梅花8', '黑桃A', '黑桃6'], 'Tom': ['黑桃J', '红桃5', '方片3'], 'Jerry': ['红桃2', '红桃Q', '方片6']}

Have fun!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容